Verileri çeşitli alt bileşenlerde doldurmak için güzel bir ApiWrapper bileşeni yapmaya çalışıyorum. Okuduğum her şeyden, bu işe yaramalı: https://jsfiddle.net/vinniejames/m1mesp6z/1/
class ApiWrapper extends React.Component {
constructor(props) {
super(props);
this.state = {
response: {
"title": 'nothing fetched yet'
}
};
}
componentDidMount() {
this._makeApiCall(this.props.endpoint);
}
_makeApiCall(endpoint) {
fetch(endpoint).then(function(response) {
this.setState({
response: response
});
}.bind(this))
}
render() {
return <Child data = {
this.state.response
}
/>;
}
}
class Child extends React.Component {
constructor(props) {
super(props);
this.state = {
data: props.data
};
}
render() {
console.log(this.state.data, 'new data');
return ( < span > {
this.state.data.title
} < /span>);
};
}
var element = < ApiWrapper endpoint = "https://jsonplaceholder.typicode.com/posts/1" / > ;
ReactDOM.render(
element,
document.getElementById('container')
);
Ancak bazı nedenlerden dolayı, üst öğe durumu değiştiğinde alt bileşen güncellenmiyor gibi görünüyor.
Burada bir şey mi kaçırıyorum?
nextProp
olmadan bir yeniden oluşturmayı tetiklemeyecek olmasının yanı sıra, durumu prop aracılığıyla ayarlamanın başka dezavantajları varcomponentWillReceiveProps(nextProps)
mı?