reactJs组件实例以呈现组件

时间:2016-08-25 13:04:14

标签: javascript 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对象有什么不同。

3 个答案:

答案 0 :(得分:1)

好吧,您可以使用React.createElement方法渲染组件:

React.createElement(Component, params)

但是使用JSX,这是相同的:

<Component />

请参阅React文档中的Multiple components

答案 1 :(得分:0)

这不是你应该如何使用React。您不必处理对象实例化; React为你做这件事。改为使用构图。

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

此外,如果要从父组件设置子组件的状态,则应该移动父组件中的逻辑。

答案 2 :(得分:0)

可能你正在寻找这样的东西。

import React, { Component } from "react";
import CamCapture from './CamCapture.js';

export default class ProctorVideoFeed extends Component{

constructor(props) {
    super(props);
    
    this.Camera = React.createElement(CamCapture);
    
    }

    //this.handleVideoClick = this.handleVideoClick.bind(this);


render(){
    return(
        <div>
            <span>{this.Camera}</span>
            <button onClick = {this.Camera.StopRecording}>Stop</button>
        </div>
    )
}

}

这里的 StopRecording 是一个在 CamCapture 类中定义的函数。