ну потому что все внутри
$(document).ready отрабатывается сразу после загрузки,
а так как элемента
$("#react-dat") еще нет в дом дереве - то и нет привязки)
вещайте инициализатор после монтирования елемента (
componentDidMount)
Lifecycle methodsReact components
наверное вот более правильное решение если уж нужно использовать jQuery
export default class Link extends Component {
constructor(props) {
super(props);
}
componentDidMount() {
this.onMouseEnterHandler()
}
onMouseEnterHandler() {
$(this.refs.link).mouseover(function(ev){
console.log(ev.currentTarget.text)
});
}
render() {
return (
<a href='' ref='link'>My link</a>
);
}
}
или вот более расширенное
export default class Link extends Component {
constructor(props) {
super(props);
this.state = {
title: 'Login'
};
}
componentDidMount() {
this.onMouseEnterHandler()
}
shouldComponentUpdate(nextProps, nextState) {
return nextState.title !== this.state.title;
}
changeLoginState() {
this.setState(({title}) => {
return {title: 'Log out'};
});
}
onMouseEnterHandler() {
const link = $(this.refs.link)
link.mouseover((ev) => {
console.log(ev.currentTarget.text)
});
link.on('click', (ev) => {
ev.preventDefault()
this.changeLoginState()
});
}
render() {
const {title} = this.state
return (
<a href='' ref='link'>{title}</a>
);
}
}