this.props.dispatch() ไม่ได้กำหนดไว้โดยใช้วงจรชีวิตการเขียนใหม่ ({})

ดังนั้นฉันจึงพยายามย้ายวิธีวงจรชีวิตของฉันไปยังเครื่องมือตกแต่ง HOC โดยใช้ Recompose บางอย่างเช่นนี้...

export const fetchOptions= lifecycle({  
  componentDidMount() {
     this.props.dispatch(change('mainForm', 'orderHeader.proxies', this.props.currentSalesRepId));
  },

  componentDidUpdate(prevProps) {
    if (this.props.total != prevProps.total){
      this.props.dispatch(change('mainForm', 'totalPurchase', this.props.total));
    }
  }
 });

จากนั้น ฉันกำลังพยายามเพิ่มลงในองค์ประกอบแบบฟอร์มซึ่งแสดงมาร์กอัปทั้งหมดของฉัน แบบนี้.

export default compose(
  connect(mapState, mapDispatch),
  fetchOptions,
)(MainReduxForm)

ฉันได้รับข้อผิดพลาดอยู่ตลอดเวลาว่า this.props.dispatch ไม่ใช่ฟังก์ชัน... มีความคิดเห็นอย่างไรบ้าง ฉันตั้งใจเก็บบรีฟนี้ไว้เพื่อหลีกเลี่ยงกำแพงข้อความ หากคุณต้องการข้อมูลเพิ่มเติม โปรดแจ้งให้เราทราบ!


person Shawn Matthews    schedule 31.03.2018    source แหล่งที่มา
comment
mapDispatchมีหน้าตาเป็นอย่างไร? คุณกำลังฉีด dispatch เข้าไปในอุปกรณ์ประกอบฉากหรือไม่?   -  person Oblosys    schedule 31.03.2018


คำตอบ (1)


ปัญหาคือเมธอด dispatch จะถูกเพิ่มลงในอุปกรณ์ประกอบฉากของคุณโดยอัตโนมัติหากคุณไม่มีฟังก์ชัน mapDispatchToProps หรือในกรณีของคุณ mapDispatch

คุณมีสองทางเลือก ลบ mapDispatch ออกจากสายเชื่อมต่อของคุณ

export default compose(
  connect(mapState),
  fetchOptions,
)(MainReduxForm)

หรือหากคุณกำลังทำอะไรบางอย่างใน mapDispatch ของคุณ เพียงเพิ่มการจัดส่งไปยังออบเจ็กต์การส่งคืนของคุณ

const mapDispatchToProps = (dispatch) => {
    return {
        dispatch,
        ...
        other dispatch functions here
        ...
        }
    }
}
person Victor Ribeiro da Silva Eloy    schedule 31.03.2018
comment
สุดยอด! การเพิ่มการจัดส่งใน mapDispatch ช่วยดูแลปัญหา! ไม่รู้ว่าทำไมฉันถึงไม่คิดอย่างนั้น! - person Shawn Matthews; 01.04.2018