2 回答

TA貢獻1815條經(jīng)驗 獲得超13個贊
ReactJS 是一個具有單向數(shù)據(jù)綁定的庫。所以像Angular或VueJS這樣的數(shù)據(jù)是不可能傳遞的。您應(yīng)該將處理程序函數(shù)傳遞給子組件,然后在Axios回答更新本地組件和父組件之后。
并且這里有個小提示,類組件和函數(shù)組件對你的情況沒有區(qū)別。注意示例代碼:
class ParentComponent extends React.Component {
state = {
data: undefined,
};
handleGetData = data => {
this.setState({
data,
});
};
render() {
return (
<ChildComponent onGetData={this.handleGetData} />
);
}
}
現(xiàn)在在ChildComponent中,您可以訪問處理函數(shù):
class ChildComponent extends React.Component {
componentDidMound() {
const { onGetData } = this.props;
Axios
.get('someSampleUrl')
.then( (data) => {
onGetData(data); // running this update your parent state
});
}
render() {
return (
<div />
);
}
}

TA貢獻1810條經(jīng)驗 獲得超4個贊
React 的做法是單向的。為了獲得最佳實踐,您必須將狀態(tài)“提升”到父組件中。
但是,如果您希望專門向上傳遞數(shù)據(jù),則需要將回調(diào)作為 prop 向下傳遞。使用該回調(diào)函數(shù)向上傳遞數(shù)據(jù):
家長:
<Parent>
<Child callback={console.log} />
</Parent>
孩子:
const Child = (props) => {
const { callback } = props;
const postData = (...) => {
...
callback(result);
}
...
}
添加回答
舉報