Immutable.js的映射用法在react的render中返回

时间:2017-11-20 08:31:46

标签: reactjs immutable.js

我正在阅读一篇文章并尝试理解“react + redux + immuntable”js用例: https://www.toptal.com/react/react-redux-and-immutablejs

我有点难以理解本文的以下部分:

以下内容来自文章:

在地图回调中,我们得到了todo,这是一个仍然是不可变形式的对象,我们可以安全地在Todo组件中传递它。 // components / TodoList.js

render() 
{
  return (
  // ….

        {todoList.map(todo => {

          return (

            <Todo key={todo.get('id')}
                todo={todo}/>

          );
        })}
  //  ….
);

}

QUES:

  1. 为什么他说“地图回调”?这是一个回调还是一个被调用的函数?

  2. 这里是否创建了地图?我的意思是它类似于让obj1 = Map({prop:'someValue'});

  3. 通过这个部分可以获得什么好处?

  4. 谢谢!

2 个答案:

答案 0 :(得分:3)

todoList是一个Immutable.js List。其中map函数与Array.prototype.map类似。 .map(callbackFn)会返回新的List,这是将callbackFn应用于原始List中的每个项目的结果。因此,在这种情况下,结果是List <Todo>个组件。 React支持使用iterables(List是可迭代的)作为子项,这就是为什么你可以直接使用map的结果。

答案 1 :(得分:1)

  1. “地图回调”是作为参数传递给todoList .map的函数,而不是像动态对象

  2. 未创建地图

  3. 在数组上使用map函数时的想法是将数组转换为其他内容。这是表达“获取此数组,并为每个元素返回一些内容并将数组返回给我”的快捷方式。有关map函数here

  4. 的更多信息