关于React.useCallback传递参数的问题

看到一段代码,有些不理解,candy参数是怎么传到dispense函数里面的?

import React from "react";

export default function App() {
  const initialCandies = ['snickers', 'skittles', 'twix', 'milky way']
  const [candies, setCandies] = React.useState(initialCandies)
  const dispense = candy => {
    setCandies(allCandies => allCandies.filter(c => c !== candy))
  }

  const dispenseCallback = React.useCallback(dispense, []);

  return (
    <div>
      <h1>Candy Dispenser</h1>
      <div>
        <div>Available Candy</div>
        {candies.length === 0 ? (
          <button onClick={() => setCandies(initialCandies)}>refill</button>
        ) : (
          <ul>
            {candies.map(candy => (
              <li key={candy}>
                <button onClick={() => dispenseCallback(candy)}>grab</button> {candy}
              </li>
            ))}
          </ul>
        )}
      </div>
    </div>
  )
}
阅读 6k
1 个回答

useCallback本身就返回传入的函数,根据第二个参数进行变更
usecallback官方文档
但你这边这样写意义不大。。。因为你最后传入button的是一个匿名函数,每一次渲染都会新创建这样一个函数。引用的地址永远在变化。所以useCallback没有起到什么作用。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题