這裏fork一下自己在開發中遇到的問題:
我是通過@connect來獲取model傳過來的接口數據list來填充page中的Table數據,這時因爲Table表單有刪除操作,刪除之後需要改變list的值,而props對象剛好不可變。這時我們應該如何處理?
@connect(({ upload }) => ({
list: upload.list,
loading: loading.effects['uploadhistory/getUploadHistoryList'],
}))
1.現在state初始化一個空的stateList
state = {
// ...
stateList:[],
}
2.在componentDidMount鉤子中重新給stateList賦值,這裏就把props.list值給了state的stateList。剛好state是可變的,問題很好的解決。這裏需要注意的是不能直接用this.props.list來賦值,而需要定義一個me屬性,then函數裏執行的是異步操作。
componentDidMount() {
console.log('Component DID UPDATE!');
const { dispatch } = this.props;
const params = {
};
let me = this;
dispatch({
type: 'uploadhistory/getUploadHistoryList',
payload: params,
}).then(() => {
me.setState({stateList: me.props.list});
});
};
這種方法只是我想出來的,只是可以解決實際問題,大家可以一起討論一下。