大きなコンポーネントをモジュール化して、その一部を再利用できるようにしたいと思います。小道具として渡された関数からsetStateを呼び出す
私は操作を行うことができるリストをレンダリングします:私のモーダル状態を更新して閉じるようにしてから、サーバコールでreduxアクションを起動します。
だから私は、カスタム動作を定義する関数を渡すしたいと思います:
var handleSubmit = (name, description, author) => {
if (inputsValidated(name, description)) {
this.setState({ addingNewProject: false, errorMessage: '' });
var payload = { name: name, date: new Date(), description: description, author: author},
routeToPushAfter = `/app/users/${author._id || 'notsigned'}`,
serverRoute = allRoutes.projectURL,
type = 'project'
this.props.postData(payload, routeToPushAfter, serverRoute, type);
}
else {
this.setState({ errorMessage: 'Please fill out form' });
}
}
は、その後のコンポーネントにこの関数を渡します。
render() {
return (
<div style={main}>
<DynamicList {...this.props} />
<DynamicList {...this.props} handleSubmit={handleSubmit} handleDelete={handleDelete} />
</div>
);
}
問題は、this.setStateが親コンポーネントにバインドされていることです。どのようにして(Reduxを使わずに)ローカル状態を変更できる関数を渡すことができますか?
ありがとうございました!
あなたは[高次成分](https://reactjs.org/docs/higher-order-componentsを使用することができます。 html) –
状態にエラーメッセージを残す代わりに、エラーメッセージをプロップの一部としてリストに渡す必要があります。はい、これはHOCのコンセプトです。 – robbymurphy
私はHOCを今読んでいます、ありがとう。 @robbymurphyは、errormessageを解決しますが、modalを開いたり閉じたりするのに必要なaddingNewProjectのブール値ではありません。 – DSz