2016-08-10 16 views
1

對於React,我是一個相當新的東西,所以很抱歉,如果這是一個簡單的問題。我有一堆組件,對於每個組件我都想爲每個{b:this.constructor.displayName}指定一個初始狀態(在構建classNames時要使用「b」)。我不想在每個組件的「getInitialState」初始狀態中定義b,而是定義一些可重用的函數來隨處設置b。如何在React中創建可重用函數

從我早期的研究看來,mixin似乎很有前景。不過,我也讀過mixin正在出路。做這個的最好方式是什麼?提前致謝!

+1

你可能要考慮使用像'redux'庫,這將讓你有一個全球性的狀態,所有的組件可以訪問(如果請求)。 http://redux.js.org/docs/basics/ExampleTodoList.html - 起初似乎很難得到你的頭,但最終你會明白它:) – James111

+0

mixins已經出來,特別是如果你想使用ES6類(這使得它們的工作方式實際上是不可能的)。我可以推薦的一件事是首先運行React的facebook github頁面上的React教程。它們非常好,並且結合對常規JS的理解,可以讓你知道如何做很多事情。 React並不神奇:它只是更多的JavaScript,所以應用相同的JS規則:例如,您可以導入任何常規JS函數,並將其放在任何首先放入React.createClass的頂部。 –

回答

2

目前在React中這樣做的方式是使用組合而不是混合。組合也被稱爲「高階組件」,看起來有點像這樣:

class Foo extends React.Component { 
    render() { 
     return <div>{ this.props.b }</div>; 
    } 
} 

const EmbedClassName = function(Child) { 
    var b = Child.constructor.displayName; 
    return (props) => <Child {...props} b={b} />; 
}; 

var ComposedFoo = EmbedClassName(Foo); 
相關問題