Прежде всего, я не рекомендую вам создавать функции вне класса компонента React.В вашем случае вы не можете использовать его как this.checkClick
, потому что функция checkClick
объявлена вне вашего компонента React.
Во-вторых, работа с реальным DOM внутри React в основном, давайтескажем, антипаттерн.React предоставляет виртуальный DOM и работает с ним, поэтому я рекомендую вам ознакомиться с React ref API .
. В вашем случае вы можете использовать метод жизненного цикла componentDidMount()
.Он вызывается (наверняка, АВТОМАТИЧЕСКИ), когда компонент завершил свою первую визуализацию, поэтому все ссылки здесь уже доступны, и все дочерние элементы смонтированы в beind и присутствуют в DOM.
import React from "react"
export default class Test extends React.Component {
componentDidMount() {
document.getElementById("button").click()
}
checkClick() {
console.log("clicked!")
}
render() {
return (
<div>
<button id="button" onClick={this.checkClick}>click</button>
</div>
)
}
}
или,используя ссылки
import React from "react"
export default class Test extends React.Component {
componentDidMount() {
this.button.click()
}
checkClick() {
console.log("clicked!")
}
render() {
return (
<div>
<button ref={button => this.button = button} onClick={this.checkClick}>click</button>
</div>
)
}
}