当前位置: 首页 > 知识库问答 >
问题:

javascript - 在组件接收到props的之后,在渲染组件自己数据的之前 需要做初始化操作,应该使用哪个生命周期方法呢(如何确保在渲染数据之前自己初始化完成)?

李睿
2024-08-16

请问一下,在组件接收到props的之后,在渲染组件自己数据的之前 需要做初始化操作,应该使用哪个生命周期方法呢(如何确保在渲染数据之前自己初始化完成)?


interface TestCompProp {
    data: string
}

const TestComp = (props: TestCompProp) => {
    
    // 需要在渲染return之前就做初始化的操作: 请问如下的代码应该在哪个生命周期下执行
    const updatedData = props.data + '_updated'

    return <>
    {
        updatedData
    }

    </>
}

共有2个答案

施景同
2024-08-16

这样写就可以,在渲染过程中改变 data 的值

郭远
2024-08-16

给你提供三种场景

interface TestCompProp {
  data: string
}

const TestComp = (props: TestCompProp) => {

  //  1.简单的显示 就这样
  // const updatedData = props.data + '_updated'

  //  2.依赖  props.data 存在大数据量计算
  // const updatedData = useMemo(() => {
  //   return props.data + '_updated'
  // }, [props.data])

  //  3.子组件控制新值
  const [updatedData, setUpdatedData] = useState(()=>{
    //  做一些初始化操作
    return props.data + '_updated'
  })
  useEffect(() => {
    setUpdatedData(props.data + '_updated')
  }, [props.data])


  return <>
    {updatedData}

  </>
}
 类似资料:
  • 我试图在呈现组件之前从API加载事件。目前我正在使用我的API服务,我从组件的ngOnInit函数调用该服务。 我的组件: 我的模板 我的API服务 组件在函数中的API调用完成获取数据之前呈现。所以我从来没有看到我的视图模板中的事件ID。所以看起来这是一个ASYNC问题。我期望在设置了属性后,绑定(组件)来完成一些工作。可悲的是,当属性被设置时,它不显示用标记的。 问:我用的方法好吗?如果没有;

  • 我有一个应用程序,大部分时间都在启动,但每7次左右启动它就会崩溃,出现错误: 我引用了这个,但最终出现了类似的错误 IndexOutOfBoundsException:空列表不包含索引1上的元素。 编辑2 null ViewModel

  • 我正在使用Vue路由器和基于文件的组件。我打电话给其中一条路线并获取一个参数(slug),该参数使用axios从API获取json。 我使用“组件内保护”来实现这一点,使用名为beforeRouteEnter的方法。我正在将axios的响应传递到下一个方法。 这是可行的,但是,Vue在设置数据之前呈现视图。这将生成

  • 我知道这个问题以前被问过很多次,但在本例中是不同的,因为错误只发生在试图将图像保存到数据库时,而其他问题不是处理图像。如果有一个,请与链接评论。 因为我经常使用log.d,所以它确实在logcat中表示以下内容: updateNote updateNote----此处图像 如果您遵循方法中的代码,就应该如此。下面是DbBitmapUtility类中的方法,我使用它来获取字节数组,以便将图像存储为B

  • 有一个Electorn 项目,里面的前端有一个组件, 在设计的时候,有一个问题想要和大家讨论一下: 在此项目内,组件需要接入props数据,目前对props做设计。 现在的情况是,需要对原始数据大量计算才能得到需要的props然后传输给组件,想要问一下: 1、是否推荐把原始数据作为props参数传递给组件让组件自己计算然后渲染? 2、是否不管在组件内还是组件外计算,对整个应用都是消耗一样的性能?

  • 问题内容: 我知道我可以在渲染组件时通过。我也知道这种方法。但是问题是,由于我的组件不知道它的初始状态,并没有太大帮助。我做。所以我想在渲染时通过它。 这样的东西(伪代码): 我知道我可以使用a 作为初始状态,但这闻起来像是反模式。 我该怎么办? 编辑清晰度 想象一下我有一个组件。到我第一次渲染它时,初始状态对应于数据库中当前注释的快照。当用户包含评论时,此列表将更改,这就是为什么它应该是a 而不