Когда я читаю документы ReactJS, я понимаю, что лучший метод жизненного цикла для размещения вызовов с избыточным действием - это componentDidMount
, но мне трудно выполнять какую-либо работу jquery в этом методе жизненного цикла:
class App extends React.Component {
constructor(props) {
super(props);
this.state = {
isAsyncLoaded: false
}
}
static getDerivedStateFromProps(nextProps, prevState) {
let {getData} = nextProps.someData;
let {hasSuccess, isLoading} = getData;
if (!isLoading && hasSuccess) {
return {
isAsyncLoaded: true
}
} else {
return {
isAsyncLoaded: false
}
}
return null;
}
componentDidMount() {
this.props.getSomeData();
$('p').css('color', 'red');
}
render() {
if (!this.state.isAsyncLoaded) return null;
return (
<p>{this.props.someData.data}</p>
)
}
}
function mapStateToProps(state) {
return {
someData: state.someData
}
}
export default connect(mapStateToProps, {getSomeData})(App);
Здесьчасть jquery $('p').css('color', 'red');
не находит элемент <p>
, потому что isAsyncLoaded
не соответствует действительности и функция render
возвращает null
.
Мой вопрос заключается в том, как решить эту проблему, не вводяконтейнер-представление, (родитель-дочерний) отношение компонента к моему приложению?