如何将选择的任何值添加到数组?
how to add whatever value is selected to an array?
我有这个自动完成功能:
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}
/>
而且我想将 selected 的任何值添加到数组中...我推送但是每次将 select 的值添加到 it.And 之前的值是deleted.Does有人知道我该怎么做吗?
看起来好像 var arr=[];
在函数体中,所以它在每个渲染周期都重新声明。推入它只会有一个值。
如果您想更新状态,请使用已更新的功能状态来附加新值。
const changeHandler = (value) => {
setItem(items => [...items, value]);
};
当您推送到作为数组的状态变量时,您并没有更改实际对象,并且 React 不会重新呈现。 Read more
您需要做的是,进行深拷贝并在该拷贝上进行更改:
const changeHandler = value => setItem(arr => [...arr, value])
我有这个自动完成功能:
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}
/>
而且我想将 selected 的任何值添加到数组中...我推送但是每次将 select 的值添加到 it.And 之前的值是deleted.Does有人知道我该怎么做吗?
看起来好像 var arr=[];
在函数体中,所以它在每个渲染周期都重新声明。推入它只会有一个值。
如果您想更新状态,请使用已更新的功能状态来附加新值。
const changeHandler = (value) => {
setItem(items => [...items, value]);
};
当您推送到作为数组的状态变量时,您并没有更改实际对象,并且 React 不会重新呈现。 Read more
您需要做的是,进行深拷贝并在该拷贝上进行更改:
const changeHandler = value => setItem(arr => [...arr, value])