immutableJS + React在映射

时间:2016-11-25 13:28:04

标签: reactjs immutable.js

有OrderedMap immutablejs对象:

{
        "country": {
            "value": "US",
            "locked": false,
            "history": null
        },
        "city": {
            "value": "NY",
            "locked": false,
            "history": [
                {
                    "value": "LA",
                    "date": 1447366980
                },
                {
                    "value": "WA",
                    "date": 1447331640
                }
            ]
        },

        "event_title": {
            "value": "some text",
            "locked": false,
            "history": null
        },
        "place": {
            "value":"some text",
            "locked": false,
            "history":null
        }
}

需要将其映射到React组件:

const fields = res.map(item => <Field name={%KEY_NEED_HERE%} rest={item} handleChange={this.handleChange} />)

如何获取iterable的密钥并将其发送到Field的名称?有些喜欢

<Field name={city} rest={item} />

Plz,帮助

2 个答案:

答案 0 :(得分:0)

传递给映射器的第二个参数是键,所以你可以这样做:

const fields = res.map((item, key) => <Field name={key} rest={item} handleChange={this.handleChange} />)

答案 1 :(得分:0)

如果您希望最终结果为name='NY',那么您需要将其传递给name={item.getIn(['city', 'value']}

getIn是一种可用于所有Immutable对象的方法。查看docs了解更多