使用 textInput 和函数组件在本机反应中更改数组对象值

Posted

技术标签:

【中文标题】使用 textInput 和函数组件在本机反应中更改数组对象值【英文标题】:Change array object value in react native with textInput and function component 【发布时间】:2021-12-23 18:47:18 【问题描述】:

大家好,我想问一下在 react native 中输入文本输入时更改数组值的问题

const [rad, setRad] = useState([
   value: 'a', status: false, title: 'ab ,
   value: 'b', status: false, title: 'ac' ,
   value: 'c', status: false, title: 'ad' ,
]);


<TextInput 
  numberOfLines=2 
  placeholder="note"
  onChangeText=(text) => setRad([...rad[3],  value: text ])
/>

但是当我输入错误屏幕时,会出现消息“传播不可迭代实例的尝试无效。 为了可迭代,非数组对象必须有一个 Symbol.iterator 方法'

我该怎么办?

【问题讨论】:

我不确定您是否尝试使用[..rad[3], value: text] 更新数组状态rad 上的第三项。您能否阐明您想要更新每个对象的所有值或基于某些idtitle 的特定对象。更多关于您要实现的目标的背景信息会有所帮助 【参考方案1】:

初始状态是一个长度为 3 的数组,即索引为 0、1 和 2,因此尝试传播 ...rad[3] 是尝试传播第四的代码em> 元素,这是一个未定义的值。

您可能打算将之前的 rad 状态数组传播到新的数组引用中并附加新的文本值。在 React 状态下更新数组时,建议使用功能状态更新来确保从之前的状态进行更新,而不是在任何回调/处理程序范围内关闭状态的值。

<TextInput 
  numberOfLines=2 
  placeholder="note"
  onChangeText=(text) => setRad(rad => [...rad,  value: text ])
/>

【讨论】:

以上是关于使用 textInput 和函数组件在本机反应中更改数组对象值的主要内容,如果未能解决你的问题,请参考以下文章

如何在本机反应中验证 TextInput 值?

反应本机iOS中的TextInput

TextInput 中的每次按键后键盘都会关闭本机反应

防止在本机反应中按下 TextInput 时显示系统键盘

如何在本机反应中使用 TextInput 显示工具提示错误

反应本机自定义组件道具不起作用