【问题标题】:Looping of constructor this.state构造函数 this.state 的循环
【发布时间】:2019-09-19 13:06:37
【问题描述】:

我想在state 中声明许多变量。如何使用动态方法来做到这一点?

例如:

constructor(props) {
    super(props);

    this.state =
    {
     test1: this.props.navigation.state.params.rowData.test1,
     test2: this.props.navigation.state.params.rowData.test2,
      .........
     test50: this.props.navigation.state.params.rowData.test50
    }
}

【问题讨论】:

  • 出于好奇,您为什么要尝试这样做,是什么导致您的数据以这种方式结构化?
  • 为什么不直接使用数组?
  • 我想创建一个编辑信息页面,并使用动态方法创建许多输入文本,当输入发生变化时,需要更新状态变量

标签: javascript reactjs react-native state


【解决方案1】:

您可以为此使用for loop。例如:

for(let i = 0; i < 50; i++){
  this.setState({ [i]: this.props.navigation.state.params.rowData.[i] })
}

如果你想在你的例子中完全做到这一点,你必须在pushobject 中的所有测试,并在setState 中设置这个对象。

类似这样的:

var obj = {};
for(let i = 0; i < 50; i++){
  obj[test+i] = test+i;
}
this.setState({test: [ ...this.state.test, obj]});

【讨论】:

  • for(let i = 0; i
  • 这是一个示例,在这种情况下,在您的状态下创建一个空数组并将其命名为 test。看看它是否有效。
【解决方案2】:

为什么不把它们散布进去?

this.state = { ...this.props.navigation.state.params.rowData }

【讨论】:

  • ...是什么意思?
  • @HowardLam 它是一个“对象传播”运算符。 Object.assign() 的 ES6 语法。欲了解更多信息,您可以阅读这篇文章:thecodebarbarian.com/object-assign-vs-object-spread.html
  • 谢谢。现在可以了。但是还有一个问题.....我如何使用循环设置状态小资+i?我可以使用任何语法吗? this.setState({petty+i:text})} value={eval("this.state.petty"+i)} />
  • @HowardLam 你一直在使用 eval。正如我在之前的评论中所说,通过使用括号波士顿来访问您的财产是完全没有必要的。你可能想退后一步——这里有几件事让我觉得一些关于基本 JS、React 和数据结构的教程可以为你节省大量时间和头痛。
猜你喜欢
  • 1970-01-01
  • 2012-11-04
  • 2016-08-04
  • 2011-04-08
  • 1970-01-01
  • 1970-01-01
  • 2017-02-20
  • 1970-01-01
  • 2014-05-19
相关资源
最近更新 更多