Tôi đang cố gắng tạo một thành phần ApiWrapper đẹp để đưa dữ liệu vào các thành phần con khác nhau. Từ mọi thứ tôi đã đọc, điều này sẽ hoạt động: 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')
);
Nhưng vì lý do nào đó, có vẻ như thành phần con không cập nhật khi trạng thái mẹ thay đổi.
Am i thiếu cái gì ở đây?
nextProp
sẽ không kích hoạt kết xuất lại mà không cócomponentWillReceiveProps(nextProps)
?