https://facebook.github.io/react/docs/update.html

我有一个更新函数,它接收一个索引和事件,以便更改数组中特定项的值.

在这种情况下,如何计算index而不是将其视为一个设置键?有可能吗?

updateValue: function(index, e) {
  var items = React.addons.update(this.state.items, {
   index: {
     amount: {$set: e.target.value}
   }
  });
  this.setState({
    items: items
  })
}

现在这显然不起作用,因为它试图更新未设置的this.state.items['index']['amount'],当我想修改this.state.items[1]['amount']以获得1的索引时.

推荐答案

您可以使用ES6 computed property names,与index变量类似:

updateValue(index, e) {
  var items = React.addons.update(this.state.items, {
    [index]: {
      amount: {$set: e.target.value}
    }
  })
  this.setState({items})
}

根据这ES6 compatability table条,React的JSX transpiler在启用和声变换时支持它们,或者您可以使用Babel代替它们(反正是react-tools is being deprecated in favour of Babel).

否则,可以使用助手函数创建具有给定命名属性的对象:

function makeProp(prop, value) {
  var obj = {}
  obj[prop] = value
  return obj
}

// ...

updateValue: function(index, e) {
  var items = React.addons.update(this.state.items, makeProp(
    index, {
      amount: {$set: e.target.value}
    }
  ))
  this.setState({items: items})
}

Reactjs相关问答推荐

sourceBuffer. appendBuffer成功,但h5视频播放器卡住了

两条react 路由的行为不同.有没有人能解释一下,我已经找了好几天了

使用Overpass API Endpoint计算 map 上的面积

如何在单击行中的图标时避免选中ionic 复选框?

Redux Store未触发React组件中的重新呈现

如何从Reaction-Arborist树获取排序数据

在ReactJS的monaco编辑器中添加美人鱼语法

StrictMode+SetInterval=双重渲染(即使使用useEffect清理)

提前输入错误:选项类型上不存在属性名称

每次状态更改时都会提交react 表单

有没有办法在用户离开页面时防止输入模糊?

使用 toast 时挂钩调用无效

Primereact 的日历组件在每个月 12 日之后使用非唯一键生成

react-router v6 中的 BrowserRouter 和 createBrowserRouter 有什么区别?我可以在不使用数据 API 的情况下使用 createBrowserRouter 吗?

在 React 中使用复选框管理状态

基于标记名的博客详细信息分组没有发生

RTK 查询Mutations 在 StrictMode 中执行两次

需要帮助在 document.queryselector 的 nextjs 页面上插入 useEffect 状态

如何在 React 中的 Material Ui 多选中设置默认值?

为什么我从另一个组件收到错误?