2016-08-25 161 views
0

我可以使用reactJS組件的實例來渲染組件: 例如,比方說,我的reactJS成分是reactJs組件的實例渲染組件

class myComponent extends Component{ 
    constructor(props){ 
    super(props) 
    this.state = { 
     next:false 
    } 
    this.alertSomething = this.alertSomething.bind(this); 
    this.showNext = this.showNext.bind(this); 
    } 

    showNext(){ 
    console.log('wow'); 
    console.log(this.state, this, this.state.next); 
    this.setState({next:true}); 
    } 

    alertSomething(){ 
    alert('Alert Something') 
    console.log(this.state, this, this.state.next); 
    this.setState({next:true}); 
    } 

    render(){ 

    return(
     <div className='column'> 
     </div> 
    ) 
    } 
} 

export default myComponent 

現在,我的另一個組件裏面我可以做的;

let x = new displayContent.renderComponent(); 
    render(
    <x /> 
    //or 
    <x.render /> 
    ) 

//我都嘗試沒有成功,我認爲有玉米粥一些其他的方式來實現這一目標,畢竟每個組件只是一個JavaScript對象。

同時,我可以調用函數來改變其狀態。喜歡。

x.someFunction(); 

其中someFunctino是內部的反應組分,做setState

可能嗎?或者我錯過了什麼?

編輯:我清楚地明白,當你想渲染一個反應組件時,你總是可以這麼做,<component />。 這個問題只是出於好奇,可以這樣做嗎?如果沒有,那麼爲什麼?,我的意思是如何不同於其他javascript對象。

+1

我不明白你在問什麼。你可以做'',爲什麼你不是在問什麼? –

+0

嗨,@DaveNewton,毫無疑問我應該使用。然而,我只是想知道如果創建一個組件的實例,然後渲染,它會做什麼?我想知道創建實例的位置。畢竟每個組件都只是一個類。有什麼辦法可以明確地創建一個實例嗎? – nitte93user3232918

+0

這只是一個類,所以你可以在任何你想要的地方創建一個實例。 –

回答

0

好了,你可以使用React.createElement方法來呈現一個組件:

React.createElement(Component, params) 

但JSX,這是相同的:

<Component /> 

參考Multiple components的陣營文檔。

0

這不是你應該如何使用React。您不必處理對象實例;反應爲你做這個。改用組合物。

render() { 
    return (
    <myComponent /> 
) 
} 

此外,如果您想要設置父組件的子組件的狀態,則應該移動父組件的邏輯。

+0

你的意思是,每次我們使用該組件時,所有這些實例化都會在內部完成。 – nitte93user3232918

+0

是的。您可以閱讀本文以更好地理解React [https://facebook.github.io/react/blog/2015/12/18/react-components-elements-and-instances.html](https://facebook .github.io /反應/博客/ 2015/12/18 /反應的組分元素和 - instances.html) –