Ich benutze React-Test-Renderer (16.0.0-Beta.5), um Snapshot-Tests auf einer benutzerdefinierten React Native-Komponente durchzuführen. Diese Komponente enthält eine Schalterkomponente, die diese Warnung verursacht während der Testausführung geworfen werden:Verwendung von react-test-renderer mit <Switch> Ursachen "Stateless-Funktionskomponenten können keine Referenzen erhalten" Warnung
console.error node_modules \ FBJS \ lib \ warning.js: 36
Warnung: Stateless Funktionskomponenten kann nicht gegeben werden Ref. Versuche, auf diese Referenz zuzugreifen, schlagen fehl.
Überprüfen Sie die Rendermethode
Switch
. in Unknown (durch Schalter erstellt) in Schalter
Minimal-Code zu reproduzieren:
import React from 'react';
import renderer from 'react-test-renderer';
import { Switch } from 'react-native';
test('renders correctly',() => {
const tree = renderer.create(
<Switch />
);
});
etwas detaillierter: Die von der nativen RCTSwitch Komponente von Switch.render verwendete verursacht wird:
return (
<RCTSwitch
{...props}
ref={(ref) => { this._rctSwitch = ref; }}
onChange={this._onChange}
/>
);
Wie Sie sehen können, ist dieser Komponente eine Referenz zugewiesen. reagieren jedoch Test-Renderer verwendet den folgenden Code zu überprüfen, ob eine Komponente staatenlos ist:
if (typeof value === 'object' && value !== null && typeof value.render === 'function') {
// Proceed under the assumption that this is a class instance
Da RCTSwitch keine Render-Methode haben, die Warnung ausgelöst wird. Ist das ein Fehler?
Switch ist eine Komponente zur Verfügung gestellt von reagieren native, ich fürchte, ich kann das nicht Stateful machen. Außerdem erscheint die Warnung nur im Scherz. –