【发布时间】:2025-12-25 22:40:16
【问题描述】:
我无法让组件在操作后重新渲染。我知道我必须在减速器中返回一个新对象,所以我返回一个全新的状态,但它仍然没有触发 componentDidMount() 或 render()
我的组件:
class AppTemplate extends React.Component {
constructor(props) {
super(props);
if(!this.props.settings.user){
this.props.dispatch(userActions.get());
}
}
componentDidUpdate(prevProps, prevState) {
console.log(prevProps, this.props);
//do some stuff
}
render() {
return (
<SomeComponent/>
);
}
}
function mapStateToProps(state) {
const { registration, role, settings } = state;
console.log(role);
return {
registration,
role,
settings
};
}
const connectedAppTemplate = connect(mapStateToProps)(AppTemplate);
export { connectedAppTemplate as AppTemplate };
我的减速机:
export function role(state = { role : null, loading: true }, action) {
switch (action.type) {
case 'USER_GET_PENDING':
return {
role:null,
loading: true
}
case 'USER_GET_FULFILLED':
const role = action.payload.data.roles[0];
const newState = {
role: role,
loading: false
}
console.log(state, newState);
console.log(state == newState);
return newState;
default:
return state
}
}
该操作正在顺利完成,甚至 mapToState 也在使用新角色进行记录,但 componentDidMount 从未触发。有什么想法吗?
谢谢!
【问题讨论】:
-
componentDidMount在哪里? -
如果对您有帮助,请务必将给定答案标记为已接受...