2017-11-01 22 views
0

ここでは、Stack Overflowで関連するすべての質問を試しましたが、この問題の解決策はまだ見つかりませんでした。Reduxはコンポーネントの小道具を更新しません

私はmeというレデューサーを持っており、foldersというオブジェクトの配列を更新しようとしています。meレデューサーを更新するとコンポーネントが更新されません。ここで

は、私は私のコンポーネントで減速を更新しています方法は次のとおりです。

class ComponentA extends Component { 
    ... 
    updateUploadedFiles(file) { 
    console.log(this.props.store); 
    const newFolders = this.props.me.folders.map(
     folder => 
     folder._id === file.parent._id 
      ? { 
       ...folder, 
       files: [...folder.files, file.file] 
      } 
      : folder 
    ); 

    this.props.updateMe({ 
     ...this.props.me, 
     folders: newFolders 
    }); 
    } 
    ... 
} 

function mapStateToProps(state) { 
    return { 
    me: state.me, 
    path: state.path, 
    filesToUpload: state.uploads 
    }; 
} 

function mapDispatchToProps(dispatch) { 
    return bindActionCreators(
    { 
     updatePath, 
     updateMe, 
     updateUploads 
    }, 
    dispatch 
); 
} 

export default connect(mapStateToProps, mapDispatchToProps, null, { 
    pure: false 
})(Upload); 

これは私のupdateMeアクションのコードです:

export const updateMe = state => ({ 
    type: "UPDATED_ME", 
    payload: state 
}); 

そして、これはme減速機のコードです:

export default function(state = "NOT_AUTHENTICATED", action) { 
    switch (action.type) { 
    case "UPDATED_ME": 
     return action.payload; 
    default: 
     return state; 
    } 
} 

また、私はレデューサーを組み合わせています:

+0

リダクションは、アクションがトリガされたときにアプリケーションの状態を更新する機能です。あなたのコードではthis.propsが使用されているので、あなたのコードは減速機ではなくコンポーネントから来ていると思います。コンポーネントから状態を更新しようとしていますか?あなたのコードに関するもう少しコンテキストを教えてください。 – DiegoTArg

+0

@DiegoTArgええ、上のコードはコンポーネントからのものです。私はしようとしている、私はコンポーネントからupdateUploadedFiles関数を呼び出して(それを 'ComponentA'と呼ぶ)、それは減速器'私は 'を更新し、' ComponentA'の小道具を更新する必要があります –

答えて

2

これは還元方法ではありません。あなたは必見はReduxのは、ストアが変更されたことを「知っている」と聞かせて任意の依存コンポーネントを更新するためにアクションを派遣あなたの再来店の任意の一部を更新するために

オブジェクトの状態はで、変更不可能なである必要があります。

+0

私は実際にここにどのようにアクションをディスパッチしています私はそれをやっている: '関数mapDispatchToProps(派遣){ リターンbindActionCreators( { updatePath、 updateMe、 updateUploads }、 は をディスパッチ)。 } ' –

+0

私はmapDispatchToPropsの中にbindActionCreators(ディスパッチを持っています)を使用しています –

+0

ああ、申し訳ありませんが、あまりにも速いです。あなたは派遣されたアクションを見ることができますか? – Jalil

関連する問題