我有一个TextInput
,我不希望每次更改其中的值时都重新呈现它
const [WrittenVal,setWrittenVal] = useState(()=>'');
...
<TextInput
value={String(WrittenVal)}
onChangeText={text => setWrittenVal(text)}
/>
但是我希望能够通过按下按钮来更改输入中的值,这就是我没有使用defaultValue
的原因
有什么办法吗?
5条答案
按热度按时间2q5ifsrm1#
您可以使用useRef保存文本输入中的文本而不呈现,使用useState在按下按钮时显示输入中的文本:
示例:https://snack.expo.dev/TW-fMx1-2
wpx232ag2#
gudnpqoy3#
你不能阻止类型的重新呈现。但是你的代码可以简化为:
nwnhqdif4#
无法防止在值更改时重新呈现输入。
但是您可以通过
React.memo
或useMemo
钩子来防止其他组件被重新呈现。按下按钮更改输入值时,您可以这样做:
xmakbtuz5#
如果你有一个嵌套的组件,如下图所示,你需要将状态移动到组件中(在EpicComponent下),setWritenVal将触发EpicComponent上的重新呈现。常见的症状是当你输入时,字段将失去焦点。