亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

無法從商店獲取更新狀態

無法從商店獲取更新狀態

慕桂英3389331 2022-12-22 09:30:10
#this 是我想對道具執行 Dispacth() 操作的地方我相信我正確連接了組件。第一個參數將 state 映射到 props,第二個參數映射到 dispatch。這樣當我分派操作然后記錄 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貢獻1111條經驗 獲得超0個贊

在組件重新渲染之前,React 道具不會更新。如果你觸發任何狀態更新,React 或 Redux,你無法看到新的道具值,直到你的點擊處理程序完成后的某個時間。


所以,這永遠不會像你希望的那樣工作:


const onClick = () => {

  console.log(props.value); // original value

  props.updateSomeValue();

  console.log(props.value); // ERROR: This will _still_ be the original value!

}

如果您正在分派 Redux 操作并需要立即訪問更新后的狀態以運行更多邏輯,您應該將該代碼切換為在 Redux“thunk”函數中執行,該函數可以訪問getState()并可以盡快讀取更新后的狀態之前的調度完成。


查看完整回答
反對 回復 2022-12-22
  • 1 回答
  • 0 關注
  • 83 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號