作者:深tp悟人生 | 来源:互联网 | 2023-09-10 10:50
通过单击按钮触发的此操作,我正在商店中设置新值:
OnClick={() => { this.handleChange(values)
函数是:
handleChange = (values) => {
const { setComponentSelected } = this.props;
//some code
setComponentSelected(values);
//some code
}
这样,我可以在Redux Dev Tools中看到我的状态已更改:
在dom中,我可以看到这种变化。
但是,另一个组件正在将我遇到问题的组件重新渲染。在此组件中,我将以这种方式进行渲染:
render() {
const { getcomponentSelected } = this.props;
console.log('getcomponentSelected',getcomponentSelected)
这就是我将商店用于redux的方式:
const mapstatetoProps = state => ({
getcomponentSelected: state.displayReportRecordReducers.setComponentSelected_data
});
const mapDispatchToProps = {
setComponentSelected: displayReportRecordactions.setComponentSelected,}
起初我可以看到this.handleChange
的变化,但是每次重新安装组件时,此console.log
的值都是旧的,与我在this.handleChange
中的值不一样。商店。重新安装没有执行任何操作,更改存储的操作仅通过const setCompOnentSelected= (value: any) => {
return async (dispatch: any) => {
try {
dispatch(success(value));
}
catch (err) {
console.log('error:',err);
};
}
function success(value) {
return { type: displayReportRecordConstants.SET_COMPONENT_SELECTED,payload: { value } };
}
};
触发,因此我不知道为什么更改了值,并且没有显示存储中的内容。
有什么主意吗?
编辑:
我的动作是:
case displayReportRecordConstants.SET_COMPONENT_SELECTED:
return update(state,{
setComponentSelected_data: { $set: payload.value },});
我的减速器是:
final snackBar = snackBar(content: Text('Yay! A snackBar!'));
// Find the Scaffold in the widget tree and use it to show a snackBar.
Scaffold.of(context).showsnackBar(snackBar);
编辑2:此屏幕快照显示了商店和我渲染的数据之间的一致性,请首先单击:
但是,如果组件被另一个组件重新渲染,则我会丢失控制台日志中的数据,这可以从商店中获取。但是Redux开发工具没有任何变化!