react 父子组件传参,由于父组件传递的参数类型有些问题,不能直接使用,需要做些改变,在哪个阶段处理比较好?

作者站长头像
站长
· 阅读数 29

react 父子组件传参,由于父组件传递的参数类型有些问题,不能直接使用,需要做些改变,在哪个阶段处理比较好?

import Child from "./child"
import React, { useState } from "react";

export default function App() {
  const [arr, setArr] = useState([
    {
      name: '张三'
    }
  ])
  const update = () => {
    setArr([])
  }
  return (
    <div>
      <Child arr={arr} update={update}></Child>
    </div>
  )
}

子组件,

import React, { useState } from "react";

export default function Child(props) {
  let arr = props.arr
  const [arr2, setArr2] = useState([])
  
    

  return (
    <div>
      21
    </div>
  )
}
useEffect(() => {
    setArr2(props.arr)  //我是在这个阶段
 })

还有哪些方式比较好

回复
1个回答
avatar
test
2024-06-20

如果 arr2 单纯是基于 arr 推导出来的,用 useMemo 就行了,不需要子组件再定义一个状态

import React, { useState } from "react";

export default function Child(props) {

  const arr2 = useMemo(() => {
    // TODO...
  }, props.arr)

  return (
    <div>
      21
    </div>
  )
}

如果 arr2 本身是归属与 子组件 的状态,但 父组件 某个状态更新时,也需要更新 子组件 的状态 那你这种写法时可以的

回复
likes
适合作为回答的
  • 经过验证的有效解决办法
  • 自己的经验指引,对解决问题有帮助
  • 遵循 Markdown 语法排版,代码语义正确
不该作为回答的
  • 询问内容细节或回复楼层
  • 与题目无关的内容
  • “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容