(還元)状態が変更されたときに何らかの理由で反応が再描画されません。 1レベルネストされている可能性がありますか?また、レキシックスインスペクタでは、状態が正しく変更されていることがわかります。手動でページを更新すると、そのページが機能していることもわかります。しかし、私はなぜそれが自動的に再描画されないのか混乱しています。反応が(還元)状態変化に応答していませんか?
簡体クラスコンポーネント
class Users extends Component {
render() {
const something = this.props.users.users;
return (
<div>
<div className='MAIN_SECTION'>
<SearchBar handleChange={(value) => this.setState({searchQuery: value})} />
<div className='LIST'>
{something.mapObject((user) => <div onClick={() => this.props.deleteUser(user.id)}>{user.name}</div>)}
</div>
</div>
</div>
);
}
}
function mapStateToProps(state) {
return {
users: state.users
};
}
export default connect(mapStateToProps, { deleteUser })(Users);
アクションクリエーター
export function deleteUser(userhash) {
return function (dispatch, getState) {
return new Promise(resolve => setTimeout(resolve, 1000)).then(() => {
const data = {
status: 200,
data: {
status: 200
}
};
if (data.status === 200) {
const newState = getState().users.users;
delete newState[userhash];
dispatch({
type: DELETE_USER,
payload: {
data: newState
}
});
}
});
};
}
リデューサー
const INITIAL_STATE = {
isFetching: true,
users: {}
};
case DELETE_USER:
return {
...state,
users: action.payload.data
};
アクションでPromiseを使用しているので、サンクミドルウェアを使用する必要があります。あなたはそれを使用していますか? –
@bartekfrはい、すべてが期待通りに働いています(私が.then()などを使用できるように)、状態は期待どおりに変化しています。反応だけが再レンダリングされません。 – NealVDV