当前位置: 首页 > 知识库问答 >
问题:

反应js setState()与循环内的键对应的变量?

崔恺
2023-03-14

有没有办法将字符串变量的值用作setState()的键?

getInitialState: function () {
    return {
        foo: '',
        bar: ''
    }
}

someOtherHandler: function() {
    var arr = ['foo', 'bar'];
    var _this = this;
    var number = Math.random();

    for (var i in arr) {
        _this.setState({ arr[i]: number });
    }

}

React会抛出上述语法错误,将arr[i]设置为变量最终会使用该变量的名称设置一个新状态。

共有1个答案

翟默
2023-03-14

可以在调用setState之前创建对象。

var newState = {};
newState[i] = number;
_this.setState(newState);

或者,如果您使用的是ES6,则可以使用computed属性。

_this.setState({ [i]: number });

然而,这段代码将多次调用setState,只调用一次更有效。构建更新的状态对象,然后应用它。

var newState = {};

for(var i in arr) {
  newState[i] = number;
}

this.setState(newState);
 类似资料:
  • 我正在学习JavaScript/React。我试图在react网站上为tic-tac-toe示例创建一个简单的for循环,但到目前为止,它一直存在问题。奇怪的是,有几个映射示例,但没有for循环示例。 无论如何,对于以下各项: 当我替换"测试代码"时,这个工作 但这次失败了 第二个选项失败,因为它没有创建“单独的”onClick元素。我怎样才能使失败的例子起作用? 更新#1 更新#2我按照@Mat

  • 我试图了解钩子的功能,但是我似乎不太明白应该如何正确地使用函数。根据我对钩子规则的理解,我应该称它们为顶级的,而不是逻辑内的(比如循环)。这让我很困惑,我应该如何在从循环呈现的组件上实现。 请看下面的示例片段,其中我使用处理程序创建了5个按钮,该处理程序将按钮的编号打印到控制台。 现在,由于我在中使用了箭头函数,每次呈现示例时都会创建一个新的函数实例,我这样做是因为我希望函数知道是哪个按钮调用了它

  • 我想播放一个音频声音一段时间。你是否可以确定循环音频的次数?在世博会上,我只看到一个声音的状态:islooping:true。这将循环的声音无休止,而不是一定量的时间!下面是关于声音状态和我播放声音的位置的代码

  • 我创建了一个需要在应用程序的多个部分中单独显示的组件-(在我的导航内部、主页和单独的路由上)。因此,我在此组件中的一个use中进行了所有操作调度(用于读取数据的api调用)效果: 如您所见,此效果应该只运行一次(当组件装载时)。 在其他任何地方,我都不会在此组件内部或外部调度这些特定操作。 该组件在3个位置渲染(导航内部、其自身的时间路径和主组件内部)。我可以在导航内部同时在时间上渲染它,没有问题

  • 问题内容: 我正在尝试了解钩子功能,但是我似乎还不太清楚如何正确使用该函数。据我从有关钩子的规则中了解到的,我应该将它们称为顶级,而不是在逻辑(如循环)之内。这让我很困惑,应该如何在从循环渲染的组件上实现。 看一下下面的示例代码片段,在该代码片段中,我创建了5个带有处理程序的按钮,该处理程序将按钮的编号输出到控制台。 现在,由于我在中使用arrow函数,因此每次在Example呈现时都会创建一个新

  • 问题内容: 大家好,我还是新手,我不知道如何使用全局变量。我想将“ this.props.topic.text”设置为全局变量,以在项目的其他应用程序上使用它。我怎样才能做到这一点 ? 问题答案: 这是一个可怕的想法,但是在React中使用全局变量的最好/最简单的方法是将其放在上。在组件中,您可以执行类似的操作,然后通过其他任何地方进行访问。 理想情况下,如果您有数据,并且在可能的状态下,需要在各