gpt4 book ai didi

reactjs - 如何在类组件中设置 zustand 状态

转载 作者:行者123 更新时间:2023-12-03 14:37:09 25 4
gpt4 key购买 nike

我正在一个站点上工作,该站点使用 zustand 将全局状态存储在一个文件中。 .我需要能够在类组件中设置该状态。我可以使用钩子(Hook)在功能组件中设置状态,但我想知道是否有办法将 zustand 与类组件一起使用。
如果有帮助,我已经为此问题创建了一个沙箱:
https://codesandbox.io/s/crazy-darkness-0ttzd
在这里,我在功能组件中设置状态:

function MyFunction() {
const { setPink } = useStore();

return (
<div>
<button onClick={setPink}>Set State Function</button>
</div>
);
}
我的状态存储在这里:
export const useStore = create((set) => ({
isPink: false,
setPink: () => set((state) => ({ isPink: !state.isPink }))
}));
如何在类组件中设置状态?:
class MyClass extends Component {
constructor(props) {
super(props);
this.state = {};
}

render() {
return (
<div>
<button
onClick={
{
/* setPink */
}
}
>
Set State Class
</button>
</div>
);
}
}

最佳答案

类组件最接近钩子(Hook)的是高阶组件 (HOC) 模式。让我们翻译一下钩子(Hook)useStore进入 HOC withStore .

const withStore = BaseComponent => props => {
const store = useStore();
return <BaseComponent {...props} store={store} />;
};
我们可以将 store 作为一个 prop 访问到任何封装在 withStore 中的类组件中。 .
class BaseMyClass extends Component {
constructor(props) {
super(props);
this.state = {};
}

render() {
const { setPink } = this.props.store;
return (
<div>
<button onClick={setPink}>
Set State Class
</button>
</div>
);
}
}

const MyClass = withStore(BaseMyClass);

关于reactjs - 如何在类组件中设置 zustand 状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66084662/

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