如何在 react.js 中获取动态文本输入的值?
how to get value in dynamic text input in react.js?
我在 react.js 项目中制作了一个页面,其中有一个文本输入和一个用于每行数据的按钮。
我想通过单击按钮获取每个输入值并对其进行处理。
{data.map((item, index) => <div><span>{item}</span>
<input type="text" placeholder='enter value' />
<button onClick={() => {alert(inputValue) }}>
click me
</button>
</div>
)}
你可以这样做
const data = [0, 1, 2, 3];
export default function App() {
const [inputs, setInputs] = useState({});
return (
<div className="App">
{data.map((item) => (
<div key={item}>
<input
onChange={(e) =>
setInputs((prev) => {
return { ...prev, [item]: e.target.value };
})
}
/>
<button onClick={() => alert(inputs[item])}>Click</button>
</div>
))}
</div>
);
}
Codesandbox:https://codesandbox.io/s/divine-wildflower-1ge7ev?file=/src/App.js:58-550
正确的反应方式是创建一个独立的组件,例如UserInput
并跟踪用户输入的状态:
// Create state
const [input, setInput] = React.useState('')
return (
<input type="text" placeholder='enter value'
onChange={event => setInput(event.target.value)}
/>
<button onClick={() => {alert(input) }}>
click me
</button>
);
然后您可以将其添加到您当前的组件中,如下所示:
{data.map((item, index) => <div><span>{item}</span><UserInput/></div>)}
我建议您使用对象而不是数组。它更适合 key-value 对。
如果你使用一个对象,它会更容易,更易读,更易于维护。
如何操作?
您只需要修改代码以循环遍历对象的键,然后每次输入值更改时 (onChange),然后设置对象的值 onChange={(e) => data[key]=e.target.value}
。要在单击字段按钮时访问值,只需使用 data[key]
.
我在 react.js 项目中制作了一个页面,其中有一个文本输入和一个用于每行数据的按钮。 我想通过单击按钮获取每个输入值并对其进行处理。
{data.map((item, index) => <div><span>{item}</span>
<input type="text" placeholder='enter value' />
<button onClick={() => {alert(inputValue) }}>
click me
</button>
</div>
)}
你可以这样做
const data = [0, 1, 2, 3];
export default function App() {
const [inputs, setInputs] = useState({});
return (
<div className="App">
{data.map((item) => (
<div key={item}>
<input
onChange={(e) =>
setInputs((prev) => {
return { ...prev, [item]: e.target.value };
})
}
/>
<button onClick={() => alert(inputs[item])}>Click</button>
</div>
))}
</div>
);
}
Codesandbox:https://codesandbox.io/s/divine-wildflower-1ge7ev?file=/src/App.js:58-550
正确的反应方式是创建一个独立的组件,例如UserInput
并跟踪用户输入的状态:
// Create state
const [input, setInput] = React.useState('')
return (
<input type="text" placeholder='enter value'
onChange={event => setInput(event.target.value)}
/>
<button onClick={() => {alert(input) }}>
click me
</button>
);
然后您可以将其添加到您当前的组件中,如下所示:
{data.map((item, index) => <div><span>{item}</span><UserInput/></div>)}
我建议您使用对象而不是数组。它更适合 key-value 对。 如果你使用一个对象,它会更容易,更易读,更易于维护。
如何操作?
您只需要修改代码以循环遍历对象的键,然后每次输入值更改时 (onChange),然后设置对象的值 onChange={(e) => data[key]=e.target.value}
。要在单击字段按钮时访问值,只需使用 data[key]
.