簡體   English   中英

Redux無法分配整數值

[英]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,
      });

這是我期望的工作方式。

  1. 加載CategoryFeed時,它會警告params.fid(假設params.fid = 1)。 params.fid實際上是主URL之后的附加字符串(例如,如果url為http:// localhost / 1 ,則params.fid為1)。
  2. 然后通過Redux將params.fid(= 1)的值存儲到currentForum
  3. 通過將有效負載值設置為currentForum之后,然后嘗試在componentDidMount()中提醒currentForum的值。 但是,它不會顯示“ 1”,但是會顯示“ undefined”。 似乎redux無法將params.fid放入currentForum。

我怎樣才能解決這個問題?

您將無法在componentDidMount()獲取currentForum的更新值。 這是因為componentDidMount()僅在組件安裝后運行。

componentDidMount() prop的更改將導致組件重新呈現。 因此,可以在render()componentDidUpdate()周期中訪問更新的值。

您可以將alertconsole.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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM