[英]Redux fails assigning integer value
在CategoryFeed類中,我有以下內容:
class CategoryFeed extends Component {
...
componentDidMount() {
const {
params,
currentForum,
updateCurrentForum,
} = this.props;
alert(params.fid);
updateCurrentForum(params.fid);
alert(currentForum);
}
...
export default connect(
(state) => { return {
currentForum: state.app.currentForum,
...
(dispatch) => { return {
updateCurrentForum: (currentForum) => { dispatch(updateCurrentForum(currentForum)); },
...
這是updateCurrentForum的樣子:
export const updateCurrentForum = (currentForum) => {
alert("inside is " + currentForum);
return {
type: UPDATECURRENTFORUM,
payload: currentForum,
};
};
在Reducer中,我定義為:
case UPDATECURRENTFORUM:
return Object.assign({}, state, {
currentForum: action.payload,
});
這是我期望的工作方式。
我怎樣才能解決這個問題?
您將無法在componentDidMount()
獲取currentForum
的更新值。 這是因為componentDidMount()
僅在組件安裝后運行。
對componentDidMount()
prop的更改將導致組件重新呈現。 因此,可以在render()
或componentDidUpdate()
周期中訪問更新的值。
您可以將alert
或console.log
移至render方法,並且應該看到更新后的值
componentDidMount
組件插入到DOM樹之后將被調用,里面是你叫updateCurrentForum(params.fid)
將更新currentForum
但這種變化將在被抓componentDidUpdate
。 有關更多詳細信息,請參見組件http://projects.wojtekmaj.pl/react-lifecycle-methods-diagram/
目前currentForum
持有
const {
params,
currentForum,
updateCurrentForum,
} = this.props;
當前可能未定義。 嘗試在道具中分配一些值,看看它是否從未undefined
變為您提供的value
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.