码迷,mamicode.com
首页 > 其他好文 > 详细

[React] Cleanly Map Over A Stateless Functional Component with a Higher Order Component

时间:2017-05-26 15:58:18      阅读:194      评论:0      收藏:0      [点我收藏+]

标签:nbsp   state   frame   ini   uem   color   ram   src   hidden   

In this lesson we‘ll create a Higher Order Component (HOC) that takes care of the key property that React looks for when using map to create elements from a list. This HOC will allow us to wrap any component and it will take care of placing the keyprop on the component for us based on the property name that we specify.

 

Consider following code:

import React from ‘react‘;
import { render } from ‘react-dom‘;

const todos = [
  { id: 1, name: ‘Create the initial state‘, isComplete: true },
  { id: 2, name: ‘Map over data‘, isComplete: true },
  { id: 3, name: ‘Refactor‘, isComplete: true },
  { id: 4, name: ‘Use HOC to remove warning‘, isComplete: false },
];

const TodoItem = (todo) => (
  <li
    style={{
      textDecoration: todo.isComplete ? ‘line-through‘ : ‘‘,
    }}
  >
    {todo.name} 
  </li>
);

const App = (props) => (
  <div>
    <ul>
      {props.todos.map(todo => <TodoItem key={todo.id} {...todo} />)}
    </ul>
  </div>
);

render(<App todos={todos}/>, document.getElementById(‘root‘));

When we trying to render <TodoItem>, we use map function, just because we have to add ‘key‘ attr to each TodoItem. We can improve this by using HoC. A HoC is just a function which takes component as arguement and return a function which render the component:

const withKeyFromProps = (Comp, propName) => (props) => (
  <Comp key={props[propName]} {...props} /> 
); 

 

----

[React] Cleanly Map Over A Stateless Functional Component with a Higher Order Component

标签:nbsp   state   frame   ini   uem   color   ram   src   hidden   

原文地址:http://www.cnblogs.com/Answer1215/p/6908577.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!