reactjs - 如何将选择的任何值添加到数组中?
问题描述
我有这个自动完成:
var arr=[];
const changeHandler = (value) => {
// arr.push(value);
// console.log("arr",arr)
setItem(arr)
};
<Autocomplete
getOptionLabel={props.getOptionLabel}
options={options}
autoHighlight
onChange={changeHandler}
renderOption={(option) => (
<React.Fragment>
{option.persianCode} - {option.title}
</React.Fragment>
)}
label={props.label}
placeholder={props.placeholder}
inputLabelClassName={classes.instrumentLabel}
/>
而且我想将选择的任何值添加到数组中......我推送但每次我选择的值都添加到它。并且以前的值被删除。有谁知道我应该做什么?
解决方案
它看起来好像var arr=[];
在函数体中,因此在每个渲染周期都重新声明了它。推入它只会有一个值。
如果要更新状态,请使用更新的功能状态来附加新值。
const changeHandler = (value) => {
setItem(items => [...items, value]);
};
推荐阅读
- java - 下面的“if 语句”如何真正与多个“OR”运算符一起使用
- javascript - CSS:透明图像叠加输入字段
- firefox - ffmpeg 记录 Xvfb 和 pulseaudio 有同步问题
- javascript - 在 for of 循环中检查重复项
- ruby-on-rails - 除了应用程序之外,如何在单独的不同 docker 容器中运行 sidekiq
- javascript - 无法更新任务
- java - 出现错误:Gamepanel 类型的方法 run() 必须覆盖或实现超类型方法?
- reactjs - 在 useEffect 中针对异步函数的 React Hook 警告
- java - Spring Boot 抛出 java.io.EOFException:由于输入结束,没有内容映射到 Object
- html - 子菜单将主菜单项推到它旁边