gpt4 book ai didi

reactjs - 无需订阅即可读取 React Context 值,例如 Redux 的 store.getState()

转载 作者:行者123 更新时间:2023-12-04 04:08:35 25 4
gpt4 key购买 nike

const UsersStateContext = React.createContext( [{user:1},{user:2},{user:3}] );

function getState(){
return UsersStateContext._currentValue;
}

经过数小时的搜索,我找到了官方不支持的这种方法。有没有像 Redux 的 那样让 React 钩子(Hook)在没有订阅的情况下读取当前状态的解决方案? store.getState() ?

或者这种方法在生产中使用是否安全?

It's understandable to subscribe a context to a component which is not related to the it's render. How should be this logic?

最佳答案

简短回答:不安全在生产中,而不是您 可以维护一个全局变量 .

这个“黑客”是正是 就像从全局变量中读取一样。您的组件 无法通知 当全局变量更新时。

请参阅此处对全局变量的说明:Why need useRef to contain mutable variable but not define a variable outside the component function?

let counter = 0;

const Component = () => {
/*
On changing the counter value, the component won't get re-rendered with its new value.
*/
console.log(counter);
return <></>
}

Is there a solution for React hooks to just read current state without subscription like Redux's store.getState()?


store.getState()返回 store 的 reducer 返回的最后一个值。这正是你想要的 UsersStateContext._currentValue 的行为。 ,如果您想感觉更安全,可以如上所述维护一个全局变量。

官方的方式是 订阅 通过使用它来获取上下文,例如使用 useContext :
const value = useContext(MyContext);

关于reactjs - 无需订阅即可读取 React Context 值,例如 Redux 的 store.getState(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62118203/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com