在我的 React 应用程序中,我有两种不同类型的组件:演示文稿和容器。它大致是在 Dan Abromov 的“Presentational and Container Components”之后,除了我不使用 Flux 或 Redux。
现在,我有以下结构:
UsersContainer
├── UsersListContainer
| └── UsersListView
└── AddUserContainer
该UsersListContainer
负责从一些REST API加载数据,如果成功的话,代表们提交的数据的UsersListView
。
该AddUserContainer
负责添加新用户,再通过调用一个REST API。现在,当成功时,我希望UsersListContainer
刷新其数据。
我能想到的最好的是这样的:
class AddUserContainer extends React.Component {
render() {
// Other UI elements omitted for brevity
return (<button onClick={ e => props.onUserAdded() }>Add user</button>);
}
}
class UsersListContainer extends React.Component {
componentWillMount() {
// start fetching data using window.fetch;
// the promise callback will but retrieved data into this.state
}
render() {
return (<table></table>);
}
}
class UsersContainer extends React.Component {
render() {
const forceUpdate = this.setState({ ...this.state, refreshToken: Math.random() });
// Other UI elements omitted for brevity
<UsersListContainer key={ this.state.refreshToken } />
<AddUserContainer onUserAdded={ forceUpdate } />
}
}
但是这种方法感觉像是误用了key
props。有没有更好/更优雅的方法来做到这一点?