【发布时间】:2015-11-27 22:50:16
【问题描述】:
根据docs,react 应用程序的状态必须是可序列化的。 那么上课呢?
假设我有一个 ToDo 应用。
到目前为止,Todo 的每个项目都具有name、date 等属性。
现在我想对不可序列化的对象使用方法。 IE。 Todo.rename() 会重命名 todo 并做很多其他事情。
据我了解,我可以在某处声明函数并执行 rename(Todo) 或通过道具 this.props.rename(Todo) 将该函数传递给组件。
我在某处声明 .rename() 有两个问题:
1)在哪里?在减速机?在应用程序周围的减速器中的某处很难找到所有 would be instance 方法。
2)传递这个函数。真的吗?我应该通过所有更高级别的组件手动传递它吗
每次我有更多的方法时,都会添加大量的样板来传递它?
或者总是这样做并希望我对一种类型的对象只有一种重命名方法。不是Todo.rename()Task.rename() 和Event.rename()
这对我来说似乎很愚蠢。对象应该知道可以对它做什么以及以何种方式。不是吗?
我在这里缺少什么?
【问题讨论】:
-
你应该看看Immutable Records 处理你想做的很好
-
它没有说明任何方法,只是预定义的一组带有可选默认值的字段。
-
您可以通过创建
Records对象的子类来添加方法,如文档中所述。但是,顺便说一下,你完全可以通过方法传递一个简单的对象,它们是可序列化的。
标签: javascript reactjs flux redux