私は、モバイルデバイス/フラッシュ/タッチデバイス検出のために、状態ではなくコンテキストに対して、userAgentを検出するために完了したチェック(CDMにコンポーネントをマウントした後)を追加したいと考えています。これは可能ですか?もしそうなら、あなたはどのようにそれをしますか? isFlashInstalled
のコンテキストの値にアクセスしようとすると、現在undefined
が取得されています。文脈からisFlashInstalledアクセスしようとしたときコンポーネントをReactにマウントした後にコンテキストを設定することはできますか?
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});
}
}
後、私はundefined
ChildComponent.js
export class ChildComponent extends Component {
// all the good stuff before render
render() {
const {isFlashInstalled} = this.context
console.log(isFlashInstalled); // undefined
}
}
をそれは答えのおかげで –
ありがとう、あなたが成功することを願って –