请问老师,componentWillReceiveProps 已经不推荐使用了,那更新列表的这部分代码要如何修改呢?

来源:4-3 使用动态路由获取不同列表内容(3)

夏葵1616

2021-04-22 15:44:29

问题描述:

componentWillReceiveProps 已经不推荐使用了,那更新列表的这部分代码要如何修改呢?

getDerivedStateFromProps 是静态的,不能使用 this,那么该如何更新 state 呢?

相关截图:

http://img.mukewang.com/climg/608128c409f47be004720229.jpg



写回答

2回答

好帮手慕慕子

2021-04-22

同学你好,对于你的问题解答如下:

1、正常情况下,在getDeriveStateFromProps中使用直接return返回数据就可以更新state中对应的数据。示例:

http://img.mukewang.com/climg/60814e83098ab87007540497.jpg

一开始state下的test是空字符串,在getDeriveStateFromProps中直接return 返回一个对象设置test属性值为"慕课网",就可以更新state中的test值了,所以页面中显示的内容为慕课网,如下图所示:

http://img.mukewang.com/climg/60814ecd0976447a02730077.jpg


但是本案例代码中,老师测试, 由于需要通过axios异步获取数据,无法直接设置返回值,所以无法通过getDerivedStateFromProps实现效果。

2、componentWillReceiveProps目前改成了UNSAFE_componentWillReceiveProps,虽然不推荐使用了,但是原名字componentWillReceiveProps还是可以使用的,一般不会影响项目的正常运行,所以目前学习阶段,建议同学还是使用原名字,防止出现未知的错误。

3、同学使用componentDidUpDate方法,结合判断实现效果也是可以的。

祝学习愉快~


0

夏葵1616

提问者

2021-04-22

http://img.mukewang.com/climg/60813af109dae6c106370309.jpg

我改成了 componentDidUpdate,加以判断可以实现了,但不知道这样可不可以,麻烦老师看一下

0

0 学习 · 15276 问题

查看课程