当前位置: 首页 > 面试题库 >

用动态键反应setState

鲁宏爽
2023-03-14
问题内容

我有以下代码片段:

onChange(e) {
    e.persist
    this.setState((prevState) => {
      prevState[e.target.id] =  e.target.value
      return prevState
    })
  }

我将如何使用上面的代码来设置每个键的状态。

这是初始状态:

 this.state = {
      heading: this.props.match.params.length > 1 ? "Edit Post" : "Create Post",
      title: '',
      category: '',
      body: '',
      author: ''
    }

问题答案:

基本规则是:

我们可以使用 计算属性名称
概念,并使用任何 js表达式 动态计算对象属性名称。为此,我们需要将表达式放在里面[]

像这样:

var obj = {

   [10 * 20 + 1 - 5]: "Hello"

};



console.log('obj = ', obj);

解:

按照您发布的代码,你需要把e.target.id里面[],就像这样:

onChange(e) {
    this.setState({
      [e.target.id]: e.target.value
    })
}

或者我们可以先创建该对象,然后将该对象传递给setState函数,如下所示:

onChange(e) {
    let obj = {};
    obj[e.target.id] = e.target.value
    this.setState(obj);
}

另外,您不需要prevState。您可以直接使用新值更新状态变量。prevState仅当新状态值取决于先前状态值时才需要,例如在计数器的情况下。



 类似资料:
  • 问题内容: 我有以下代码片段: 我将如何使用上面的代码来设置每个键的状态。 这是初始状态: 问题答案: 基本规则是: 我们可以使用 计算属性名称 概念,并使用任何 js表达式 动态计算对象属性名称。为此,我们需要将表达式放在里面。 像这样: 解: 按照您发布的代码,你需要把里面,就像这样: 或者我们可以先创建该对象,然后将该对象传递给函数,如下所示: 另外,您不需要。您可以直接使用新值更新状态变量

  • 问题内容: 假设我在组件中将状态设置为: 如果在我的代码的其他地方,我有一个包含这些值的键的数组,即,如何循环遍历该数组以找到相应状态值的值? 问题答案: 状态是一个对象 ,因此您可以通过以下方式访问任何值: 使用任何循环等迭代,并通过来访问值,如下所示: 检查以下代码段:

  • 假设以下和所有组件/fus/fci/ssg只有一个带有站点道具的h1。我想了解为什么它是一个有效的react元素,但这些元素的渲染效果并不相同。一个有h1元素,另一个没有。其想法是不为不同站点创建带有切换的大型组件,每个站点将根据导航选择进行交换。我没有看到任何关于这方面的文件,除非我错过了。。。 导航

  • 问题内容: 我正在读取一个JSON文件,其中包含某些人的名称和图像URI。在遍历结构时,我可以打印名称,但无法显示图像。我也看到了那个阵营不支持动态图像,所以我做了一个解决办法的建议在这里。 JSON格式 主要成分 问题答案: 根据您期望的图像数量,您可以尝试将文件放置在文件夹中,如下所示: 然后在您的中,如果您要剪裁 资产:/中的 部分字符串,则可以使用: 如果要处理大量图像,则文件将变得难以维

  • 问题内容: 我需要动态加载React组件。 我从用户获取要加载为字符串的组件名称。我正在使用 webpack 。 如何动态加载组件,而不要使用静态import语句。似乎不评估表达式。我想要实现的是这样的事情。 但这似乎不起作用。 问题答案: 基本上,它可以归结为预先创建您将需要的所有块。然后,您只需要一种动态引用它们的方法。这是我基于的解决方案: http://henleyedition.com/