bindActionCreatorsのReduxドキュメントには、次のように記載されています。
の唯一の使用例
bindActionCreators
は、一部のアクションクリエーターをReduxを認識しないコンポーネントに渡し、ディスパッチまたはReduxストアを渡さない場合です。
bindActionCreators
使用/必要になる例は何ですか?
どのようなコンポーネントがReduxを認識しませんか?
両方のオプションの長所/短所は何ですか?
//actionCreator
import * as actionCreators from './actionCreators'
function mapStateToProps(state) {
return {
posts: state.posts,
comments: state.comments
}
}
function mapDispatchToProps(dispatch) {
return bindActionCreators(actionCreators, dispatch)
}
function mapStateToProps(state) {
return {
posts: state.posts,
comments: state.comments
}
}
function mapDispatchToProps(dispatch) {
return {
someCallback: (postId, index) => {
dispatch({
type: 'REMOVE_COMMENT',
postId,
index
})
}
}
}
私は最も一般的な答えは実際には問題に対処しているとは思わない。
以下のすべての例は、基本的に同じことを行い、「事前バインディング」なしの概念に従います。
// option 1
const mapDispatchToProps = (dispatch) => ({
action: () => dispatch(action())
})
// option 2
const mapDispatchToProps = (dispatch) => ({
action: bindActionCreators(action, dispatch)
})
// option 3
const mapDispatchToProps = {
action: action
}
オプション#3
はオプションの省略形にすぎない#1
ので、なぜオプション#1
vsオプションを使用するのかという本当の問題#2
です。これらの両方がreact-reduxコードベースで使用されているのを見てきましたが、かなり混乱しています。
混乱は、(質問自体で引用されている)bindActionCreatorsのドキュメントがreact-reduxで使用しないように言っているのに対して、ドキュメント内のすべての例がreact-redux
使用bindActionCreators
しているという事実に起因すると思います。
答えはコードベースの一貫性だと思いますが、私は個人的に必要なときにいつでもアクションをディスパッチに明示的にラップすることを好みます。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加