我有一个form
的组件,其中onSubmit
处理程序设置为this.props.onSubmit
。
我试图在此表单中添加一些额外的功能,我希望它在暂停(1000毫秒)后提交。
我似乎无法使用jquery $inputQuery.trigger('submit')
提交表单,如果我只是致电.onSubmit()
,则处理程序不会拥有event
。
componentDidMount: function () {
console.log('hi')
var _this = this
var dn = React.findDOMNode(this.refs.inputQuery)
var $inputQuery = $(dn)
$inputQuery.on('keyup', function () {
console.log('bo')
delay(function () {
console.log('boook')
// $inputQuery.trigger('submit') // doesn't work
// $inputQuery.submit() // doesn't work
_this.props.onSubmit()
}, 1000)
})
},
如何在具有反应的特定onSubmit
上触发ref
事件?
答案 0 :(得分:2)
从this github issue我了解到:
... jQuery没有触发真正的DOM事件,但试图在自己的内部事件映射中找到回调... - bloodyowl
要模拟/触发事件,请使用React.addons.TestUtils.Simulate
和.click()
等方法.submit()
并提供node
。
将componentDidMount
更改为:
function () {
var time = this.props.fireSubmitOnEntry
if (this.props.fireSubmitOnEntry) {
var inputNode = React.findDOMNode(this.refs.inputQuery)
var formNode = React.findDOMNode(this.refs.form)
var $input = $(inputNode)
$input.on('keyup', function (e) {
var code = e.which
if (code === 13) return false
delay(function () {
React.addons.TestUtils.Simulate.submit(formNode)
}, time)
})
}
}
请记得使用var React = require('react/addons')
与npm
一起访问TestUtils
。