单击按钮时,在函数内调用React组件

时间:2018-07-03 13:13:45

标签: javascript reactjs react-component

Container组件未呈现。谁能指导我为什么我无法渲染Container组件?

App.js

import React, { Component } from "react";
import "./App.css";
import Container from "./Container";

class App extends Component {
  add() {
    return <Container />;
  }
  render() {
    return (
      <div className="App">
        <button onClick={() => this.add()}>CLICK</button>
      </div>
    );
  }
}

export default App;

Container.js

import React, { Component } from "react";

export default class Container extends Component {
 render() {
   return <h1>hello</h1>;
  }
}

3 个答案:

答案 0 :(得分:1)

您可以设置状态并在单击按钮时渲染组件

C

或者如果它只是您要在按钮上显示可见性的单个容器,则单击

git describe --tags --first-parent --abbrev=0 master

答案 1 :(得分:0)

您的函数未呈现,因为方法add()的返回不在您的render()方法内。它位于onClick()内部,因此不会渲染。尝试像下面的代码段一样

class Container extends React.Component {
    render(){
      return <h1> Hello World </h1>
    }
}

class App extends React.Component {
  state= { render: false }
  add = () => {
    this.setState({render : !this.state.render})
  }
 render() {
  return (
   <div className="App">
     <button onClick={() => this.add()}>CLICK</button>
     { this.state.render &&
        <Container/>
     }
   </div>
  );
 }
}

ReactDOM.render(<App/>,document.getElementById('root'))
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react-dom.min.js"></script>
<div id="root"></div>

您甚至可以像上面一样切换<Container>呈现,但是您不能在onClick内返回Component并期望将其呈现。

答案 2 :(得分:0)

只需在要渲染组件的函数中更改this.state即可。   this.setState({addContainer:true}) 通常在render()函数中渲染所有组件,当状态改变时,您的组件将自动被渲染。