Dim*_*nis 3 reactjs react-context react-hooks
我有一个 Provider 组件,它的值通过钩子导出。
我所描述的简单实现是这样的:
// SomeProvider.jsx
const SomeContext = React.createContext(null);
function SomeProvider(props) {
const [state, setState] = useState(null)
useEffect(() => {
//some logic
setState(newValue)
}, [props.someValue])
return <SomeContext.Provider value={state} {...props} />;
}
const useSome = () => React.useContext(SomeContext);
export { SomeProvider, useSome };
Run Code Online (Sandbox Code Playgroud)
现在,如果我想在多个地方使用这个上下文提供者怎么办?例如
// App.jsx
<SomeProvider someValue={valueOne}>
<SomeComponent />
</SomeProvider>
<SomeProvider someValue={valueTwo}>
<SomeOtherComponent />
</SomeProvider>
Run Code Online (Sandbox Code Playgroud)
哪里valueOne和valueTwo可能会发生变化
// SomeComponent.jsx
import { useSome } from 'SomeProvider';
function SomeComponent() {
const someValue = useSome();
return ....
}
Run Code Online (Sandbox Code Playgroud)
// SomeOtherComponent.jsx
import { useSome } from 'SomeProvider';
function SomeOtherComponent () {
const someValue = useSome();
return ....
}
Run Code Online (Sandbox Code Playgroud)
这种方法会导致两个SomeProvider实例共享一个共同的值,从而把事情搞砸吗?
如果是这样的话,最终每个人SomeProvider都有自己的“私人”价值的正确方法是什么?
如果不是这种情况,这是如何工作的,因为所有 Providers 都来自同一个React.useContext()调用?
| 归档时间: |
|
| 查看次数: |
554 次 |
| 最近记录: |