我知道这是正确的做法 -
使用onClick,onBlur等属性在反应组件上附加处理程序。
如果附加自定义事件,则将它们附加到componentDidMount中,以便始终在每次渲染时附加它们。
但是,使用jquery将事件附加到DOM元素时会发生什么?为什么我不能听这些事件?我将它们附加到componentDidMount旁边。但是事件处理程序应该在第一次出现时才会被触发?
我正在调试一些反应代码,它直接将处理程序附加到它上面,但它根本没有对处理程序进行处理。那是为什么?
答案 0 :(得分:2)
如果没有代码示例,很难确切知道,但很可能您尝试使用jQuery将事件绑定到某些react-generate DOM元素。因此,根据您执行绑定的位置,您可能正在使用不返回结果的jQuery选择器,因为React在运行选择器时没有将该元素呈现给DOM。
这就是为什么,如果你打算使用jQuery绑定,你应该确保你在组件生命周期的一部分这样做,以确保在尝试使用jQuery选择它之前,元素实际呈现给DOM。所以这就是为什么建议将这类代码放在componentDidMount
中并在componentWillUnmount
中清理它。