ฉันมีองค์ประกอบ React ง่ายๆที่ฉันเชื่อมต่อ (การแมปอาร์เรย์ / สถานะอย่างง่ายทับ) เพื่อไม่ให้อ้างอิงบริบทของร้านค้าฉันต้องการวิธี "จัดส่ง" โดยตรงจากอุปกรณ์ประกอบฉาก ฉันเคยเห็นคนอื่นใช้แนวทางนี้ แต่ไม่สามารถเข้าถึงได้ด้วยเหตุผลบางประการ :)
นี่คือเวอร์ชันของการพึ่งพา npm แต่ละรายการที่ฉันใช้อยู่ในปัจจุบัน
"react": "0.14.3",
"react-redux": "^4.0.0",
"react-router": "1.0.1",
"redux": "^3.0.4",
"redux-thunk": "^1.0.2"
นี่คือส่วนประกอบที่มีวิธีการเชื่อมต่อ
class Users extends React.Component {
render() {
const { people } = this.props;
return (
<div>
<div>{this.props.children}</div>
<button onClick={() => { this.props.dispatch({type: ActionTypes.ADD_USER, id: 4}); }}>Add User</button>
</div>
);
}
};
function mapStateToProps(state) {
return { people: state.people };
}
export default connect(mapStateToProps, {
fetchUsers
})(Users);
หากคุณต้องการเห็นตัวลด (ไม่มีอะไรน่าตื่นเต้น แต่อยู่ที่นี่)
const initialState = {
people: []
};
export default function(state=initialState, action) {
if (action.type === ActionTypes.ADD_USER) {
let newPeople = state.people.concat([{id: action.id, name: 'wat'}]);
return {people: newPeople};
}
return state;
};
หากคุณต้องการดูว่าเราเตอร์ของฉันได้รับการกำหนดค่าอย่างไร w / redux
const createStoreWithMiddleware = applyMiddleware(
thunk
)(createStore);
const store = createStoreWithMiddleware(reducers);
var Route = (
<Provider store={store}>
<Router history={createBrowserHistory()}>
{Routes}
</Router>
</Provider>
);
อัพเดต
ดูเหมือนว่าถ้าฉันละเว้นการจัดส่งของตัวเองในการเชื่อมต่อ (ขณะนี้อยู่ด้านบนฉันกำลังแสดง fetchUsers) ฉันจะได้รับการจัดส่งฟรี (เพียงไม่แน่ใจว่าปกติแล้วการตั้งค่าที่มีการกระทำแบบ async จะทำงานอย่างไร) คนมิกซ์แอนด์แมตช์กันหมดหรือเปล่า?
[mapDispatchToProps]
bindActionCreators(actionCreators, dispatch)
ตัวเลือกหรือไม่ ฉันสังเกตเห็นในรหัสของคุณที่// es7 spread syntax
บรรทัดdispatch
จะไม่ถูกส่งไปยังbindActionCreators