在componentDidUpdate中未加载的React道具

时间:2015-06-10 23:48:24

标签: javascript reactjs

在反应中,如果加载了this.props,我该怎么办?我尝试使用componentDidUpdate检查@props是否与prevProps不同,但我发现它们总是一样的: - /

当@ props.account.subbableProperties不为空时,我想调用下面的函数。

Object rowData[][] = { codes.toArray(), values.toArray() };
Object columnNames[] = codes.toArray();

当我把上面的函数放在componentDidMount中时,@ props.account.subbableProperties是空白的(还没有加载)所以我不能把它放在那里。

我尝试使用componentDidUpdate,但出于某种原因,此警报永远不会触发!

uiActions.curliesPropertyReplacement
  element: @textarea
  words: @props.account.subbableProperties
  _this: @
  replaceProperty: true
  selectOnTop: true
  maxCount: 3
  callback: (e, value, strategy) =>
    @setState text:@textarea.text()

我也在componentWillReceiveProps中尝试过:

componentDidUpdate (prevProps, prevState) ->
 if !(_.isEqual(prevProps.account.subbableProperties, @props.account.subbableProperties))
     alert("they do differ!")

似乎newProps和@props同时更新: Logs 我做错了什么?

1 个答案:

答案 0 :(得分:0)

在您的组件发生更改后触发

componentDidUpdate ,此更改来自DOM,因此在组件重新呈现时会始终触发。

我对你所说的内容了解不多,因为我不知道this.props即将到来的地方,但你是否尝过componentWillReceiveProps()?这似乎更合适,因为您正在等待更新某些道具,而不是整个组件。

编辑:好的,我只是留言,看到你更新帖子。 所以你确实尝试了componentWillReceiveProps并提供了更多信息。如果您正在等待更改某些道具或状态,则可以尝试componentWillUpdate查看它们是否有所不同。如果您有新闻,我会稍后再回来查看:^)。