javascript - 如何管理未知数量的文本区域的状态?

标签 javascript reactjs antd

我已经使用 map 函数并使用 value 将值分配给 textarea,还尝试使用 defaultValue 进行分配。

但是,如果我使用值,则我无法更改 onChange 函数中的值,如果我使用 defaultValue,则其他值会出现相同的值。

// Update value
this.props.values.map((item: any) => (<TextArea onChange={this.handleChange} value={item.val}/>))

// Update defaultValue
this.props.values.map((item: any) => (<TextArea onChange={this.handleChange} defaultValue={item.val}/>))

如果需要,我希望将 textarea 值更改为新值。

最佳答案

您需要管理映射的每个 Input 组件的值状态

理论上,您希望将 N 状态作为 N 区域文本框,一种方法是管理一个单个对象包含所有状态。

The answer is written with hooks, it's pretty easy to make equivalent one with a class component.

// props.values
const VALUES = ["Hello", "World", "All Texts Areas Managed"];

function TextAreaManager() {
  // We will manage text box i
  const [valuesManager, setValuesManager] = useState([...VALUES]);
  return (
     {VALUES.map((value, i) => (
       <TextBoxItem
         key={i}
         value={valuesManager[i]}
         onChange={e => {
           // Update the value of text box i on next render.
           valuesManager[i] = e.target.value;

           // Render with new value of text box i.
           setValuesManager([...valuesManager]);
         }}
       />
     ))}
  );
}

演示:

Edit bold-sun-9mn3v

关于javascript - 如何管理未知数量的文本区域的状态?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56474272/

相关文章:

javascript - 在 React 的 onClick 中传递 undefined 是否安全?

javascript - 正确更新 react 状态/组件?

reactjs - 删除 FormItem 中的 AutoComplete' 选项后,如何清除已删除值的输入?

reactjs - Antd 如何固定多选组件的大小?

javascript - 我在架构中收到一条错误消息,表明它尚未注册。请参阅下面的描述

javascript - AJAX代码顺序的区别

javascript - 我如何在第一次迭代时反转 CSS3 动画(而不是第二次迭代)

javascript - model.find 方法未从数据库返回必填字段

reactjs - 使用行数 react native 文本组件

reactjs - VSCode : Cannot find module 'antd' or its corresponding type declarations