Ich möchte die durchgeführten Prüfungen hinzufügen (sobald die Komponente in CDM eingehängt ist), um userAgent zu erkennen - für die Zwecke der Erkennung von mobilen/flash/touchDevice zum Kontext und nicht zum Zustand. Ist das möglich? Wenn ja, wie würdest du das tun? Ich bekomme gerade undefined
, wenn ich versuche, auf den Wert für den Kontext für die isFlashInstalled
zuzugreifen. Hier ist Einblick in die Komponente den Kontext setzen:Ist es möglich, den Kontext festzulegen, nachdem die Komponente in React geladen wurde?
App.js
export class App extends Component {
static childContextTypes = {
isFlashInstalled: React.PropTypes.bool
};
constructor() {
super();
this.state = {
isFlashInstalled: false
};
}
getChildContext() {
return {
isFlashInstalled: this.state.isFlashInstalled
};
}
componentDidMount() {
const flashVersion = require('../../../client/utils/detectFlash')();
// I know this could be done cleaner, focusing on how for now.
if (flashVersion && flashVersion.major !== 0) {
this.setFlashInstalled(true);
} else {
this.setFlashInstalled(false);
}
}
setFlashInstalled(status) {
this.setState({isFlashInstalled: status});
}
}
Später, wenn sie versuchen aus dem Kontext für den Zugriff auf isFlashInstalled I undefined
ChildComponent.js
export class ChildComponent extends Component {
// all the good stuff before render
render() {
const {isFlashInstalled} = this.context
console.log(isFlashInstalled); // undefined
}
}
Ich bin nach wie vor nicht in der Lage, um es für mich funktioniert, aber da Ihre Antwort ist eindeutig Recht Ich werde markieren es als die Antwort danke –
Danke, hoffe, dass Sie Erfolg haben werden –