ステートレスコンポーネント(純関数)でRedux connectとasyncConnectを使いたいので、これらのクラスデコレータを正規関数呼び出しにリファクタリングする必要があります。このRedux接続コードをどのようにリファクタリングするのですか?
ただし、どこでもconnectを使用したasyncConnectの例は見つかりません。
は、ここで私が持っているものだ:
@asyncConnect([{
deferred: true,
promise: ({ params, store: { dispatch, getState } }) => {
if (!isLoaded(getState())) {
return dispatch(loadUser(params.userID))
}
},
}])
@connect(
state => ({ // eslint-disable-line
user: state.publicData.user.data,
error: state.publicData.user.error,
loading: state.publicData.user.loading,
}),
{ initializeWithKey })
export default class UserProfile extends Component {
...stuff
}
は、ここで私は必要なものです:
asyncConnect(
someStuff,
connect(moreStuff)
)(props => <div />)
私は実際にそれを書くためにどのようには考えています。
非常に参考になりました。ありがとうございました。あなたはこのアプローチがクラスにも当てはまると言っても間違いありませんが、 "より良い"構文以外のデコレータには何か利点があるのでしょうか? –
デコレータの本当の「利益」は、デコレーターのクラスとのコロケーションです。クラスが持つ追加的な振る舞いを簡単に知ることができます。私の唯一の不満は、その機能がまだ提案中であり、現在更新が必要なことです。プロポーザルが変更された場合、管理者の更新作業にリスクを負わせるようにコードベースを置きます。 – ctrlplusb
私はこのようにcomposeを使うことはできないと思います。 'TypeError:(0、_reactRedux.compose)は関数ではありません' –