如何读取不可变列表中的不可变记录?
How to read an immutable record which is inside immutable list?
我可以独立读取不可变列表和不可变记录。但是我有一个不可变记录,它嵌套在我无法读取的不可变列表中。
不可变列表:
let listObj = Immutable.List([{a:'0', b:'1'}, {c:'2', d:'3'}])
console.log('listObj', listObj._tail.array[0]); // {a:'0', b:'1'}
不可变记录:
const Person = Immutable.Record({
name: null
}, 'Person')
let me = Person({ name: 'Steve' })
me.toString() // "Person { "name": "My Name" }"
let myName = me.get('name')
console.log('myName', myName) // "Steve"
不可变列表中的不可变记录:
let x = Immutable.List([Immutable.Record({
name: 'Steve'
})])
console.log('x', x) // undefined
能否请您提供一些指示(如果有的话)以了解如何读取嵌套在不可变列表中的不可变记录?
谢谢!
如果您实际尝试 运行 您的代码:
let x = Immutable.List([Immutable.Record({
name: 'Steve'
})])
console.log('x', x) // Spoiler alert: NOT undefined
<script src="https://cdnjs.cloudflare.com/ajax/libs/immutable/3.8.2/immutable.js"></script>
你会发现它输出
x List [ function Record(values) {
...
} ]
注意到列表中的东西是 function
了吗?那是因为它是 Record.Factory
,而不是 Record
本身。您需要像在第二个示例中那样使用它,您创建一个 Record.Factory
然后使用它来创建一个 Record
:
const Person = Immutable.Record({
name: null
}, 'Person')
let me = Person({
name: 'Steve'
})
let x = Immutable.List([me])
console.log(x) // [{"name": "Steve"}]
console.log(x.get(0)) // {"name": "Steve"}
console.log(x.getIn([0, 'name'])) // "Steve"
<script src="https://cdnjs.cloudflare.com/ajax/libs/immutable/3.8.2/immutable.js"></script>
我可以独立读取不可变列表和不可变记录。但是我有一个不可变记录,它嵌套在我无法读取的不可变列表中。
不可变列表:
let listObj = Immutable.List([{a:'0', b:'1'}, {c:'2', d:'3'}])
console.log('listObj', listObj._tail.array[0]); // {a:'0', b:'1'}
不可变记录:
const Person = Immutable.Record({
name: null
}, 'Person')
let me = Person({ name: 'Steve' })
me.toString() // "Person { "name": "My Name" }"
let myName = me.get('name')
console.log('myName', myName) // "Steve"
不可变列表中的不可变记录:
let x = Immutable.List([Immutable.Record({
name: 'Steve'
})])
console.log('x', x) // undefined
能否请您提供一些指示(如果有的话)以了解如何读取嵌套在不可变列表中的不可变记录?
谢谢!
如果您实际尝试 运行 您的代码:
let x = Immutable.List([Immutable.Record({
name: 'Steve'
})])
console.log('x', x) // Spoiler alert: NOT undefined
<script src="https://cdnjs.cloudflare.com/ajax/libs/immutable/3.8.2/immutable.js"></script>
你会发现它输出
x List [ function Record(values) {
...
} ]
注意到列表中的东西是 function
了吗?那是因为它是 Record.Factory
,而不是 Record
本身。您需要像在第二个示例中那样使用它,您创建一个 Record.Factory
然后使用它来创建一个 Record
:
const Person = Immutable.Record({
name: null
}, 'Person')
let me = Person({
name: 'Steve'
})
let x = Immutable.List([me])
console.log(x) // [{"name": "Steve"}]
console.log(x.get(0)) // {"name": "Steve"}
console.log(x.getIn([0, 'name'])) // "Steve"
<script src="https://cdnjs.cloudflare.com/ajax/libs/immutable/3.8.2/immutable.js"></script>