【发布时间】:2021-07-18 14:09:15
【问题描述】:
而不是将props从父级传递给child1(child2的父级)->到child2,
我想使用createContext 并使用useContext 接收值。
我尝试做的事情不正确,因为我收到了一个错误**'booleanContext' is not defined**。
如何传递createContext 状态/值?
App.js
CreatePass 是 SignUp 中的一个组件
const [signUpFirst, setIfSignUp] = useState(true);
const booleanContext = createContext(setIfSignUp);
return (
<booleanContext.Provider value={setIfSignUp}>
<div>
</Switch>
<Route exact path='/signup'>
<SignUp homePage={exitSignUpPage} setUserNumber={setUserID} />
</Route>
<Route exact path='/home'>
<Home userIDNumber={userID} setIfSignUp={setIfSignUp} />
</Route>
<CreatPass />
</Switch>
</div>
</booleanContext.Provider>
);
SignUp.js
render() {
return (
<div className='signUp-div'>
<Header />
<Router history={history}>
<div className='form-div'>
<Redirect to='/signup/mobile' />
<Switch>
<Route exact path='/signup/mobile' component={MobileNum} />
<Route exact path='/signup/idnumber'>
<IdentNumber setPersonalID={this.props.setUserNumber} />
</Route>
<Route exact path='/signup/password'>
<CreatePass />
</Route>
</Switch>
</div>
</Router>
</div>
);
}
CreatePass.js //'booleanContext' is not defined no-undef
const CreatePass = () => {
const changeBooleanValue = useContext(booleanContext);
const handleClickButton = () => {
changeBooleanValue(true);
};
return (
<div className='form-div'>
<button onClick={handleClickButton}>Click</button>
</div>
);
};
export default CreatePass;
编辑 - 更新:
这个解决方案不好它的值和我上面做的一样,booleanContext 未定义 -
export const booleanContext = createContext(); // default value is undefiend
...
const App = () =>
return(
<booleanContext.Provider value={setIfSignUp}>
<CreatPass />
</booleanContext.Provider>
)
}
export default App;
很高兴得到解释
【问题讨论】:
标签: reactjs react-hooks use-context createcontext