美文网首页
react闭包导致访问到旧的state值的处理方法

react闭包导致访问到旧的state值的处理方法

作者: Spidd | 来源:发表于2020-12-10 10:15 被阅读0次

[react闭包导致访问到旧的state值的处理方法]

import React, { useState, useMemo, useRef, useEffect } from "react"

function App() {
  const [params, setParams] = useState({
    size: 10,
    page: 1,
  })
  //划重点  这里这里
  const paramsRef = useRef(params)
  useEffect(() => {
    paramsRef.current = params
  }, [params])

  const list = useMemo(() => {
    return [
      {
        key: "aaa",
        name: "aily",
        render: (item) => (
          <button onClick={() => handleClick(item)}>{item.name}</button>
        ),
      },
    ]
  }, [])

  const handleClick = (text) => {
    console.log("params:", params)
    console.log("paramsRef:", paramsRef)
    console.log("text:", text)
  }

  return (
    <div className="App">
      <button
        onClick={() => {
          setParams({ size: 11, page: 2 })
          console.log("params changes")
        }}
      >
        change params
      </button>
      <p>
        params size: {params.size}, page: {params.page}
      </p>
      <ul>
        {list.map((item) => (
          <li key={item}>{item.render(item)}</li>
        ))}
      </ul>
    </div>
  )
}

export default App

相关文章

  • react闭包导致访问到旧的state值的处理方法

    [react闭包导致访问到旧的state值的处理方法]

  • 闭包

    通过闭包访问到了局部变量text let和闭包解决this丢失 使用闭包对外暴露方法 高级闭包demo

  • Swift - Closures

    方法是特殊的闭包 全局方法:一个有名字并且没有捕获任何值的闭包 嵌套方法:一个有名字并且能捕获从外部方法的值 闭包...

  • 闭包

    1.闭包的概念 「函数」和「函数内部能访问到的函数作用域外的变量」的总和,就是一个闭包。 举例: 在函数内部可以访...

  • Swift枚举enum,枚举值case(方法体) 与 case(

    总结: 如果枚举值,是方法闭包,那么只有在取值的时候,才触发方法体中的代码。 所以建议大家枚举值里是方法闭包,而不...

  • React - 绑定事件 & 修改state的值

    React绑定事件 & 修改state的值

  • 浅谈react中的state和props

    1、state的作用 state是React中组件的一个对象,React中,更新组件的state,会导致重新渲染用...

  • TypeError: Cannot read property

    问题描述: react组件中的方法获取state中的值时报错:TypeError: Cannot read pro...

  • 函数

    封闭函数 用变量的方法定义函数 闭包 闭包存循环的索引值 闭包做私有变量计算器 闭包做选项卡

  • 自定义结构体方法示例

    自定义结构体 带有闭包的函数变量,其底层实现原理和带有闭包的匿名函数类似,接手值被隐含的绑定到方法值的闭包环境中,...

网友评论

      本文标题:react闭包导致访问到旧的state值的处理方法

      本文链接:https://www.haomeiwen.com/subject/apylgktx.html