初始化状态,没有构造函数在反应

初始化状态,没有构造函数在反应,第1张

初始化状态,没有构造函数在反应

关于问题2,请参见Dan的出色解答:在这种情况下,是否需要使用setState(function)重载?


  1. 不,这不是局部变量。与

    this.state
    在构造函数中声明相同。

  2. 是的,在这种情况下,您只能使用

    this.setState({ value: this.state.value + 1 })
    ,结果将是相同的。

但是请注意,使用功能

setState
可以带来一些好处:

  1. 如果在外部声明setState函数,则可以重用它:
        const increment = prevState => ({      value: prevState.value + 1    })

现在,如果您有多个组件需要使用此功能,则只需在任何地方导入和重用逻辑。

    this.setState(increment)
  1. React压扁数个
    setState
    并批量执行它们。这可能会导致某些意外行为。请参见以下示例:

http://prepen.io/CodinCat/pen/pebLaZ

        add3 () {      this.setState({ count: this.state.count + 1 })      this.setState({ count: this.state.count + 1 })      this.setState({ count: this.state.count + 1 })    }

执行此功能的

count
意志只会加1

如果使用功能性setState:

http://prepen.io/CodinCat/pen/dvXmwX

        const add = state => ({ count: state.count + 1 })    this.setState(add)    this.setState(add)    this.setState(add)

计数将按预期增加+3。

您可以在此处查看文档:https : //facebook.github.io/react/docs/react-
component.html#setstate



欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zaji/5614928.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-12-15
下一篇2022-12-15

发表评论

登录后才能评论

评论列表(0条)

    保存