避免使用 immutable.js 排序
Avoid sorting using immutable.js
对我来说 Immutable.js 减少了很多麻烦并且它是一个很棒的库,但现在我遇到了麻烦,我的原始对象来自服务器但是当我使用它的任何功能时 fromJS({myObj})
它可以工作,但保存了一个副本,但已排序 "a-z" 我正在制作一些需要原始结构的东西,以保持组件来自服务器的顺序,有人有想法吗?
Javascript 核心对象明确不提供有关键顺序的保证。 Immutable.Map
(您的 fromJS()
调用的预期结果)紧随其后。
如果您想要订购,您应该将每件商品的订购指定为另一个 属性,或者更传统地,从 Array
.[=14 创建一个 Immutable.List
=]
换句话说,这听起来像是一个方形 peg/round 洞问题。确保您为任务使用了正确的数据结构。
默认情况下,fromJS
将您的对象翻译成 lists
和 maps
。前者是有序的,但不是键控的,而后者是键控的,但不是有序的,所以都不适合你的用例。
您要找的是 OrderedMap
,这是一个 Map
并有额外的广告订单保证:
import { OrderedMap } from 'immutable';
const orderedMap = OrderedMap({key: "value"});
您仍然可以通过使用 fromJS
来实现它:它有一个名为 reviver 的第二个参数,它也可以用于使用 OrderedMaps 而不是标准地图:
import Immutable from 'immutable';
const reviver = (key, value) =>
Immutable.Iterable.isKeyed(value) ? value.toOrderedMap() : value.toList();
const data = Immutable.fromJS(js, reviver);
对我来说 Immutable.js 减少了很多麻烦并且它是一个很棒的库,但现在我遇到了麻烦,我的原始对象来自服务器但是当我使用它的任何功能时 fromJS({myObj})
它可以工作,但保存了一个副本,但已排序 "a-z" 我正在制作一些需要原始结构的东西,以保持组件来自服务器的顺序,有人有想法吗?
Javascript 核心对象明确不提供有关键顺序的保证。 Immutable.Map
(您的 fromJS()
调用的预期结果)紧随其后。
如果您想要订购,您应该将每件商品的订购指定为另一个 属性,或者更传统地,从 Array
.[=14 创建一个 Immutable.List
=]
换句话说,这听起来像是一个方形 peg/round 洞问题。确保您为任务使用了正确的数据结构。
fromJS
将您的对象翻译成 lists
和 maps
。前者是有序的,但不是键控的,而后者是键控的,但不是有序的,所以都不适合你的用例。
您要找的是 OrderedMap
,这是一个 Map
并有额外的广告订单保证:
import { OrderedMap } from 'immutable';
const orderedMap = OrderedMap({key: "value"});
您仍然可以通过使用 fromJS
来实现它:它有一个名为 reviver 的第二个参数,它也可以用于使用 OrderedMaps 而不是标准地图:
import Immutable from 'immutable';
const reviver = (key, value) =>
Immutable.Iterable.isKeyed(value) ? value.toOrderedMap() : value.toList();
const data = Immutable.fromJS(js, reviver);