ReactNative 开发时,如何设计一个数据“灵活”的组件呢?

66 天前
 mouyase

在项目中遇到了类似这样的需求。

有一个类似表单的页面,这个页面里的每一个组件的数据源都可能会有以下几种情况。

基本的逻辑就是页面里总是显示最后一个激活的值,但是这种情况下不知道如何设计组件才能达到一个比较好的效果了。

之前试着把数据放进了 ref ,但是这样数据改变又很难刷新,不知道有没有什么好办法来处理呢。

1008 次点击
所在节点    问与答
23 条回复
mouyase
66 天前
@huijiewei 刚刚这边做着做着就有了一个疑问。

假设还是上面的结构。

A 组件内部有一个 state ,一个按钮和一个文本,state 用来判断一个文本的展示与否。同时我需要外面(比如 B 组件)接收到这个 state 用于逻辑处理。所以我应该在按钮点击事件的时候,修改 state ,同时调用父组件传入的 onChange 函数,传出 state 。

但是如果这种情况下,我还需要 C 按钮也可以切换这个 A 组件的 state ,我应该怎么处理比较好?

我现在的做法是,在父组件放一个 state ,然后 A 组件 onChange 的时候,将传出的数值赋值到这个 state 上,同时,又把这个 state 传入 A 组件作为 prop ,然后在 a 组件用 useEffect ,当这个值变化的时候再给 A 组件内的 state 赋值。然后 C 操作的时候修改父级的 state 。

这样似乎会导致 A 组件内部按钮按下时,组件渲染两次。
huijiewei
65 天前
@mouyase 开发的时候使用了 StrictMode ,都会渲染两次。
mouyase
65 天前
@huijiewei 不是严格模式的问题,state 被连续赋值了两次

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1030401

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX