2016-08-18 47 views
1

在陣營docs,它說,功能部件需要有一個類類型 -React如何知道函數是否是一個組件?

如果REACT看到一個元素與函數或類類型,它知道 問這個組件它呈現什麼元素,給道具相應的 。

const Button = ({ children, color }) => ({ 
    type: 'button', 
    props: { 
    className: 'button button-' + color, 
    children: { 
     type: 'b', 
     props: { 
     children: children 
     } 
    } 
    } 
}); 

但在丹阿布拉莫夫反應,終極版example,他的表象組件沒有類類型的任何地方,那麼,如何做出反應知道下面是一個組成部分?是因爲它有propTypes嗎?

import React, { PropTypes } from 'react' 

const Todo = ({ onClick, completed, text }) => (
    <li 
    onClick={onClick} 
    style={{ 
     textDecoration: completed ? 'line-through' : 'none' 
    }} 
    > 
    {text} 
    </li> 
) 

Todo.propTypes = { 
    onClick: PropTypes.func.isRequired, 
    completed: PropTypes.bool.isRequired, 
    text: PropTypes.string.isRequired 
} 

export default Todo 

回答

1

您使用的第一個Button示例是JSX最終將轉換爲的內容(這就是爲什麼它看起來與第二個待辦事例不同)。一旦你的待辦事項組件獲得通過通天塔運行,這JSX會變成這樣一個對象,

const Todo = ({ onClick, completed, text }) => ({ 
    type: 'li', 
    props: { 
    children: text, 
    style: { 
     textDecoration: completed ? 'line-through' : 'none' 
    }, 
    onClick: onClick 
    } 
}) 

於是,在一天(或transpilation)的結束,我們的Todo組件有一個「類型」屬性一樣React文檔解釋。你可以在這裏找到更多信息React Elements vs React Components

相關問題