ค้นหาเว็บไซต์

javascript - ใช้ useEffect เพื่อตอบสนองต่อการเปลี่ยนแปลงของสถานะ Redux


ฉันต้องการบางสิ่งที่จะทำงานทุกครั้งที่ prop เปลี่ยนไป กับคลาสของ React ฉันสามารถทำได้ดังนี้:

componentDidUpdate(prevProps) {
  if (prevProps.x !== this.props.x) {
    // do something
  }
}

ฉันรู้ว่าใน hooks ควรใช้ useEffect พร้อมกับอาร์เรย์ของ dependency:

useEffect(() => {
  // do something
}, [props.x])

แต่ฉันต้องทำบางอย่างนอกขอบเขตของ useEffect

ในกรณีของฉัน ฉันต้องการฟังก์ชันภายใน onChange ให้ทำงานเฉพาะเมื่อสถานะของ Redux มีการเปลี่ยนแปลง:

const Editor: React.FC = () => {
  const { options } = useSelector((state: RootState) => state.settings)

  <CodeMirror
    onChange={(editor, data, value) => {
    // I need to do something only when prev state is different
    if (prevOptions !== options) {
      editor.refresh()
    }
  />

ฉันไม่สามารถหาวิธีทำสิ่งนี้ได้ นอกจากอาจจะตั้งค่าธงนอกฟังก์ชันคอมโพเนนต์เมื่อมีการเปลี่ยนแปลงเกิดขึ้นแล้วตั้งค่ากลับด้วยตนเอง