私はreact-reduxを使い始める前に、フロントエンドでオブジェクトを更新する必要があるバックエンドサービスから取得する多くのオブジェクトを使用するアプリケーションのフロントエンドコードを単純化する非常に興味深い方法を見つけましたほぼリアルタイムでなぜ反応成分をカレー化できないのですか?
コンテナクラスを使用すると、監視が自動化されます(変更時にストア内のオブジェクトが更新されます)。ここでは例です:
:できるだけシンプルかつ明確に分離してアプリケーションの残りの部分を供給しようとしてconst MethodListContainer = React.createClass({
render(){
return <MethodList {...this.props} />},
componentDidMount(){
this.fetchAndWatch('/list/method')},
componentWillUnmount(){
if (isFunction(this._unwatch)) this._unwatch()},
fetchAndWatch(oId){
this.props.fetchObject(oId).then((obj) => {
this._unwatch = this.props.watchObject(oId);
return obj})}});
、私は自動的ので、適当な容器を供給するだろう代替「接続」を供給しようとしました
const connect = (mapStateToProps, watchObjectId) => (component) => {
const ContainerComponent = React.createClass({
render(){
return <component {...this.props} />
},
componentDidMount(){
this.fetchAndWatch()},
componentWillUnmount(){
if (isFunction(this._unwatch)) this._unwatch()},
fetchAndWatch(){
this.props.fetchObject(watchObjectId).then((obj) => {
this._unwatch = this.props.watchObject(watchObjectId);
return obj})}
});
return reduxConnect(mapStateToProps, actions)(ContainerComponent)
};
これは次いで、このように使用されている:
module.exportsは=接続(mapStateToProps、 '/リスト/メソッド')(MethodList)
を但し、component
はレンダリングされません。 component
がインスタンス化またはレンダリングされない点を除いて、コンテナがレンダリングされます。 component
は、パラメータとして渡して代わりに直接参照しないと、期待通りにレンダリング(および更新)します。
エラーまたは警告は生成されません。
私は間違っていますか?
提案していただきありがとうございます。しかし、これは違いはありませんでした。 –
私が指摘したこと以外にHOCを構成する方法には何の問題もありません。 'reduxConnect'がreduxのエイリアスであると仮定します。' react-redux 'からimport {connect as reduxConnect}を接続します;' – jpdelatorre
です。私は問題を見ることができないので、私は多くの実験の後に質問を掲示することになった。私自身の答えの回避策は私には分かっていますが、mapStateToPropsをパススルー(および補強)するためには修正する必要があります。 –