道具

道具是一種將資訊傳遞給 React 元件的方法,它們可以包含任何型別的函式 - 有時也稱為回撥函式。

在 JSX 中,使用屬性語法傳遞 props

<MyComponent userID={123} />

在 MyComponent 的定義中,現在可以從 props 物件訪問 userID

// The render function inside MyComponent
render() {
    return (
        <span>The user's ID is {this.props.userID}</span>
    )
}

定義所有 props 及其型別以及適用的預設值非常重要:

// defined at the bottom of MyComponent
MyComponent.propTypes = {
    someObject: React.PropTypes.object,
    userID: React.PropTypes.number.isRequired,
    title: React.PropTypes.string
};

MyComponent.defaultProps = {
    someObject: {},
    title: 'My Default Title'
}

在這個例子中,prop someObject 是可選的,但是 prop tiuan3 是必需的。如果你未能向 MyComponent 提供 userID,則在執行時,React 引擎將顯示一個控制檯,警告你未提供所需的道具。請注意,此警告僅顯示在 React 庫的開發版本中,生產版本不會記錄任何警告。

使用 defaultProps 可以簡化

const { title = 'My Default Title' } = this.props;
console.log(title);

console.log(this.props.title);

它也是使用 object arrayfunctions 的保障。如果你沒有為物件提供預設道具,如果未傳遞道具,則以下內容將丟擲錯誤:

if (this.props.someObject.someKey)

在上面的示例中,this.props.someObjectundefined,因此 someKey 的檢查將引發錯誤並且程式碼將中斷。使用 defaultProps,你可以安全地使用上述檢查。