Javascript 通过在组件内部执行函数来响应重复使用状态的更改
我目前正在尝试首次对我的react应用程序实现Javascript 通过在组件内部执行函数来响应重复使用状态的更改,javascript,reactjs,redux,Javascript,Reactjs,Redux,我目前正在尝试首次对我的react应用程序实现redux 我创建了一个reducer,将react与redux连接起来,并在组件a中设置了一个操作-到目前为止还不错。但是,我如何倾听组件B内部的状态变化呢 大概是这样的: changes.subscribe(value => { if (value === 1) { this.runSpecificFunction(); } }); 换句话说,我想订阅更改,并通过在组件B内部执行一些函数来响应更改。我如何才能做
redux
我创建了一个reducer,将react与redux连接起来,并在组件a中设置了一个操作-到目前为止还不错。但是,我如何倾听组件B内部的状态变化呢
大概是这样的:
changes.subscribe(value => {
if (value === 1) {
this.runSpecificFunction();
}
});
换句话说,我想订阅更改,并通过在组件B内部执行一些函数来响应更改。我如何才能做到这一点?
到目前为止,我得到的组件B——接收组件:
const mapStateToProps = state => {
return {
nav: state.navigation
};
};
export default connect(mapStateToProps)(withRouter(CartHolder));
减速器:
const initialState = {
navigation: 0 // inactive
};
const rootReducer = (state = initialState, action) => {
switch (action.type) {
case 'START_NAVIGATION':
return {
navigation: action.value
};
case 'STOP_NAVIGATION':
return {
navigation: action.value
};
default:
return state
}
};
export default rootReducer;
任何状态更改(基于redux或不基于redux)都将重新呈现子组件。因此,使用useffect
钩子应该适合您的用例()
在您的示例中类似于此:
const CartHolder = () => {
React.useEffect(() => {
myCallbackFunction(nav);
}, [nav]);
return (...);
};
您无需在任何地方调用
subscribe
。在connect
中包装的每个组件都将订阅到您的存储,并在每次存储更改时重新呈现更改的内容
?如果它是一个redux存储,那么为什么处理函数希望向它传递一个参数?如果您希望一个组件根据状态更改执行某些操作,那么只需连接、componentDidUpdate和componentDidMount,或者使用Selector,对使用hooks@azium将在每次存储更改时重新渲染
:不正确,如果mapStateToProps返回的内容发生更改,它将重新渲染,如果使用useSelector,当选择器返回的内容发生更改时,它将重新渲染。因为OP有一个mapStateToProps,它每次返回一个新对象时,它都会在状态发生任何变化时重新渲染。@HMRchanges
只是我刚刚编出来的一个属性——我想象它是如何工作的。如何在redux状态更改时启动函数?