Reactjs 反应选择始终重新渲染,即使在更改其他状态时也是如此
反应选择始终重新渲染,即使在更改其他状态时也是如此Reactjs 反应选择始终重新渲染,即使在更改其他状态时也是如此,reactjs,react-hooks,react-select,Reactjs,React Hooks,React Select,反应选择始终重新渲染,即使在更改其他状态时也是如此 ... const [expense_currency, setExpenseCurrency] = React.useState(expense_claim.expense_currency); const [remarks, setRemarks] = React.useState(expense_claim.remarks); ... ... return ( ... <div clas
...
const [expense_currency, setExpenseCurrency] = React.useState(expense_claim.expense_currency);
const [remarks, setRemarks] = React.useState(expense_claim.remarks);
...
...
return (
...
<div className="form-group row p-0 col-sm-12 col-md-6">
<label className="text-nowrap col-form-label col-sm-4">Currency</label>
<div className="col-sm-8 p-0" title={expense_currency}>
<Select
className="select2"
placeholder="Select Currency"
isDisabled={false}
isClearable={true}
value={expense_currency}
options={select_currency}
onChange={selected => { setExpenseCurrency(selected.value) }}
/>
</div>
</div>
<div className="form-group row p-0 col-sm-12 col-md-6">
<label className="text-nowrap col-form-label col-sm-4">
Remarks
</label>
<div className="col-sm-8 p-0">
<textarea
className="form-control"
required={true}
disabled={false}
name="remarks"
placeholder=""
defaultValue={remarks}
onChange={e => setRemarks(e.target.value)}
></textarea>
</div>
</div>
)
。。。
const[expense\u currency,setExpenseCurrency]=React.useState(expense\u claim.expense\u currency);
const[备注,set备注]=React.useState(费用\索赔备注);
...
...
返回(
...
通货
{setExpenseCurrency(selected.value)}
/>
评论
设置备注(e.target.value)}
>
)
我的chrome react分析器中的SS
我已尝试选择v2.0.0到v.2.4.4,它们都有相同的结果。
我能知道如何在更新备注字段时不重新显示吗?这取决于
Select
是否使用PureComponent或memo()或类似的东西。但是如果是这样,那么每次传入的道具都会中断检查,因为您正在为onChange每次渲染创建回调
要获得一致的回调引用,请使用:
并将其传递给:
onChange={onSelectChange}
如果选择\u currency
是非原语,例如数组或对象,则需要确保也是一致的引用。你没有发布,所以我不能提供建议
onChange={onSelectChange}