使用输入值使用 useState 添加到数组 - React
adding to an array using useState using the input value - React
我真的很接近实现最终目标。我的目标是添加 X,X 的名称是输入的值。我只是想要一些帮助,说明为什么该功能不起作用(我确定该方法是正确的)。如果您解释一下,我将不胜感激。
函数:
const [activityNames, setName] = useState([
{ id: 1, name: 'Feel free to add, edit and delete!' }
]);
const handleSetName = e => {
const name = {
id: Math.random() * 10000,
name: e.target.value
};
let names = activityNames.concat(name)
setName(names);
};
输入:
<input type="text" placeholder="Aktivitätsname" value={activityNames.name} />
<button onClick={handleSetName}>
<i className="fas fa-plus"></i>
</button>
您需要正确设置输入字段的值,并正确检索它。
为了设置一个input的值,你还需要有一个change listener——将输入的当前值放入state,然后使用that state value在 handleSetName
而不是 e.target.value
内。 (handleSetName
里面的目标是按钮,没有值)
const App = () => {
const [value, setValue] = React.useState('');
const [activityNames, setName] = React.useState([
{ id: 1, name: 'Feel free to add, edit and delete!' }
]);
const handleSetName = e => {
const name = {
id: Math.random() * 10000,
name: value
};
let names = activityNames.concat(name)
setName(names);
};
return (<div>
<input placeholder="Aktivitätsname" value={value} onChange={e => setValue(e.target.value)} />
<button onClick={handleSetName}>
<i className="fas fa-plus"></i>
</button>
{JSON.stringify(activityNames)}
</div>);
};
ReactDOM.render(<App />, document.querySelector('.react'));
<script crossorigin src="https://unpkg.com/react@16/umd/react.development.js"></script>
<script crossorigin src="https://unpkg.com/react-dom@16/umd/react-dom.development.js"></script>
<div class='react'></div>
我真的很接近实现最终目标。我的目标是添加 X,X 的名称是输入的值。我只是想要一些帮助,说明为什么该功能不起作用(我确定该方法是正确的)。如果您解释一下,我将不胜感激。
函数:
const [activityNames, setName] = useState([
{ id: 1, name: 'Feel free to add, edit and delete!' }
]);
const handleSetName = e => {
const name = {
id: Math.random() * 10000,
name: e.target.value
};
let names = activityNames.concat(name)
setName(names);
};
输入:
<input type="text" placeholder="Aktivitätsname" value={activityNames.name} />
<button onClick={handleSetName}>
<i className="fas fa-plus"></i>
</button>
您需要正确设置输入字段的值,并正确检索它。
为了设置一个input的值,你还需要有一个change listener——将输入的当前值放入state,然后使用that state value在 handleSetName
而不是 e.target.value
内。 (handleSetName
里面的目标是按钮,没有值)
const App = () => {
const [value, setValue] = React.useState('');
const [activityNames, setName] = React.useState([
{ id: 1, name: 'Feel free to add, edit and delete!' }
]);
const handleSetName = e => {
const name = {
id: Math.random() * 10000,
name: value
};
let names = activityNames.concat(name)
setName(names);
};
return (<div>
<input placeholder="Aktivitätsname" value={value} onChange={e => setValue(e.target.value)} />
<button onClick={handleSetName}>
<i className="fas fa-plus"></i>
</button>
{JSON.stringify(activityNames)}
</div>);
};
ReactDOM.render(<App />, document.querySelector('.react'));
<script crossorigin src="https://unpkg.com/react@16/umd/react.development.js"></script>
<script crossorigin src="https://unpkg.com/react-dom@16/umd/react-dom.development.js"></script>
<div class='react'></div>