为了账号安全,请及时绑定邮箱和手机立即绑定

使用 useRef 更改输入值

使用 useRef 更改输入值

慕桂英546537 2023-05-11 14:23:46
我用 React 的 useRef 钩子捕获了一个元素。如果我使用 console.log(this.inputRef) 我得到:<input aria-invalid="false" autocomplete="off" class="MuiInputBase-input-409 MuiInput-input-394" placeholder="Type ItemCode or scan barcode" type="text" value="2">有没有办法使用 this.inputRef 更改该元素的值?然后强制重新渲染?
查看完整描述

3 回答

?
慕莱坞森

TA贡献1810条经验 获得超4个赞

听起来您正在寻找的是ImperativeHandle挂钩。

来自 React 文档:

useImperativeHandle 自定义使用 ref 时暴露给父组件的实例值

下面的代码应该适合你:

function ValueInput(props, ref) {

  const inputRef = useRef();

  useImperativeHandle(ref, () => ({

    changeValue: (newValue) => {

      inputRef.current.value = newValue;

    }

  }));

  return <input ref={inputRef} aria-invalid="false" autocomplete="off" class="MuiInputBase-input-409 MuiInput-input-394" placeholder="Type ItemCode or scan barcode" type="text" value="2">

}

ValueInput = forwardRef(ValueInput);

查看完整回答
反对 回复 2023-05-11
?
猛跑小猪

TA贡献1858条经验 获得超8个赞

好吧,你可以这样做:

<input ref={myRef} value={myRef.current.value} />

唯一的问题是 refs DO NOT update or reredender the component, so, the value will never update... 而不是它可能会在您尝试将不受控制的输入作为受控输入时抛出错误


查看完整回答
反对 回复 2023-05-11
?
萧十郎

TA贡献1815条经验 获得超13个赞

也许这可以帮助


return(

    <input type="text" ref={inptRef}  />

    <button onClick={()=>inptRef.current.value = ""}>clear input</button>


)


查看完整回答
反对 回复 2023-05-11
  • 3 回答
  • 0 关注
  • 245 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信