如何解决在react之外修改reactjs表单输入值
我正在使用一个在后台使用react的js库。我想对其进行修改以在它呈现的表单上预填充输入。我只能从实例中访问顶级反应组件。我该如何设置值以使React能够拾取它?
我尝试将el.value
和$el.attr('value','val')
设置为无效。我也尝试过直接通过el.__reactInternalInstance$abc123._currentElement.props.value
设置状态,但是也不起作用。
通话:
const event = new Event("input",{ bubbles: true })
el.dispatchEvent(event)
也没有帮助。
解决方法
我想出了一个使用jquery的解决方案,如果没有库,它就无法工作。用户单击输入时,第一行填充该字段。当他们扩展操作时,第二个填充它。请注意,展开任何操作都会被调用。但通过on
单击,jquery似乎可以正常工作。问题的一部分是创建元素,直到扩展操作为止。
$('body').on('click','tr[data-param-name="<INPUT NAME>"] input',setInput)
$('.opblock').on('click',setInput)
我没有找到以下调用的链接,但这似乎是通过react来设置值的。
function setInput (e) {
let xinput = $('tr[data-param-name="<INPUT NAME>"] input')
let target = xinput[0]
if (xinput.val() == '') {
let value = "INPUT VALUE"
const setter = Object.getOwnPropertyDescriptor(target,"value").set
const prototype = Object.getPrototypeOf(target)
const prototypeValueSetter = Object.getOwnPropertyDescriptor(prototype,'value').set
if (setter && setter !== prototypeValueSetter) {
prototypeValueSetter.call(target,value)
} else {
setter.call(target,value)
}
const event = new Event("input",{bubbles: true})
target.dispatchEvent(event);
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。