慕桂英3389331
2022-12-22 09:30:10
#this 是我想對道具執(zhí)行 Dispacth() 操作的地方我相信我正確連接了組件。第一個參數(shù)將 state 映射到 props,第二個參數(shù)映射到 dispatch。這樣當(dāng)我分派操作然后記錄 getState 時,我可以看到商店已更新。import React from "react";import { Modal, Button } from "react-bootstrap";import { connect } from "react-redux"function AddCart(props) { console.log("AddCart Props", props); function handleClick(e) { e.preventDefault(); props.addtocard() // props.addtocard((props.count * props.price)) } return <Modal {...props} size="md" aria-labelledby="contained-modal-title-vcenter" centered > <Modal.Header closeButton > <Modal.Title id="contained-modal-title-vcenter"> Successful! </Modal.Title> </Modal.Header> <Modal.Body> <p> <b>count:{props.count} size:{props.size} x title:{props.title} price:{(props.count * props.price).toFixed(2)}</b> added to your cart! </p> </Modal.Body> <Modal.Footer > <Button className="edit-btn" onClick={props.onHide}>Close</Button> <Button className="edit-btn" href="/cart" onClick={handleClick}>Go to Cart</Button> </Modal.Footer> </Modal>}function mapDispatchToProps(dispatch, props) { return { addtocard: () => dispatch({ type: "ADD_ITEM", price: (props.count * props.price) }) }}export default connect(null, mapDispatchToProps)(AddCart);
1 回答

catspeake
TA貢獻(xiàn)1111條經(jīng)驗 獲得超0個贊
在組件重新渲染之前,React 道具不會更新。如果你觸發(fā)任何狀態(tài)更新,React 或 Redux,你無法看到新的道具值,直到你的點擊處理程序完成后的某個時間。
所以,這永遠(yuǎn)不會像你希望的那樣工作:
const onClick = () => {
console.log(props.value); // original value
props.updateSomeValue();
console.log(props.value); // ERROR: This will _still_ be the original value!
}
如果您正在分派 Redux 操作并需要立即訪問更新后的狀態(tài)以運行更多邏輯,您應(yīng)該將該代碼切換為在 Redux“thunk”函數(shù)中執(zhí)行,該函數(shù)可以訪問getState()并可以盡快讀取更新后的狀態(tài)之前的調(diào)度完成。
添加回答
舉報
0/150
提交
取消