วิธีใช้อย่างหนึ่งที่เป็นไปได้bindActionCreators()
คือการ "แมป" การกระทำหลายอย่างเข้าด้วยกันเป็นเสาเดียว
การจัดส่งปกติมีลักษณะดังนี้:
แมปการกระทำของผู้ใช้ทั่วไปสองสามอย่างกับอุปกรณ์ประกอบฉาก
const mapStateToProps = (state: IAppState) => {
return {
}
}
const mapDispatchToProps = (dispatch: Dispatch) => {
return {
userLogin: () => {
dispatch(login());
},
userEditEmail: () => {
dispatch(editEmail());
},
};
};
export default connect(mapStateToProps, mapDispatchToProps)(MyComponent);
ในโครงการขนาดใหญ่การทำแผนที่การจัดส่งแต่ละครั้งแยกกันอาจรู้สึกไม่สะดวก ถ้าเรามีพวงของการกระทำที่เกี่ยวข้องกับแต่ละอื่น ๆ ที่เราที่สามารถรวมการกระทำเหล่านี้ ตัวอย่างเช่นไฟล์การดำเนินการของผู้ใช้ที่ทำสิ่งต่างๆที่เกี่ยวข้องกับผู้ใช้ทุกประเภท แทนที่จะเรียกแต่ละการกระทำว่าเป็นการจัดส่งแยกกันเราสามารถใช้bindActionCreators()
แทนdispatch
ได้
การจัดส่งหลายรายการโดยใช้ bindActionCreators ()
นำเข้าการกระทำที่เกี่ยวข้องทั้งหมดของคุณ มีแนวโน้มว่าทั้งหมดจะอยู่ในไฟล์เดียวกันในที่เก็บ redux
import * as allUserActions from "./store/actions/user";
และตอนนี้แทนที่จะใช้การจัดส่งให้ใช้ bindActionCreators ()
const mapDispatchToProps = (dispatch: Dispatch) => {
return {
...bindActionCreators(allUserActions, dispatch);
},
};
};
export default connect(mapStateToProps, mapDispatchToProps,
(stateProps, dispatchProps, ownProps) => {
return {
...stateProps,
userAction: dispatchProps
ownProps,
}
})(MyComponent);
ตอนนี้ฉันสามารถใช้ prop userAction
เพื่อเรียกการกระทำทั้งหมดในส่วนประกอบของคุณ
IE:
userAction.login()
userAction.editEmail()
หรือ
this.props.userAction.login()
this.props.userAction.editEmail()
.
หมายเหตุ: คุณไม่จำเป็นต้องแมป bindActionCreators () กับเสาเดียว ( => {return {}}
แผนที่เพิ่มเติมที่ userAction
) คุณยังสามารถใช้bindActionCreators()
เพื่อแมปการกระทำทั้งหมดของไฟล์เดียวเป็นอุปกรณ์ประกอบฉากแยกกัน แต่ฉันพบว่าการทำเช่นนั้นอาจสร้างความสับสน ฉันชอบให้แต่ละการกระทำหรือ "กลุ่มการกระทำ" ได้รับชื่อที่ชัดเจน ฉันชอบตั้งชื่อownProps
ให้สื่อความหมายมากขึ้นว่า "อุปกรณ์ประกอบฉากเด็ก" เหล่านี้คืออะไรหรือมาจากไหน เมื่อใช้ Redux + React อาจทำให้เกิดความสับสนเล็กน้อยเมื่อมีการจัดหาอุปกรณ์ประกอบฉากทั้งหมดดังนั้นยิ่งอธิบายได้ดีเท่าไร
#3
เป็นชวเลขสำหรับ option#1
อย่างไร?