如何在React jsx中使用innerHTML渲染组件

乌龙圈

我目前正在编写可在两个视图(图形和列表)之间切换的功能。两个是视图容器的类的名称。

  toggleGraphView() {
    const two = document.getElementsByClassName('two')[0];
    two.innerHTML = '<span>Graph View!</span>'
  }

  toggleListView() {
    const two = document.getElementsByClassName('two')[0];
    two.innerHTML = "<ShotLog shotLog={this.state.shotLog}/>"
  }

该组件可以很好地切换到图形视图文本(“图形视图!”),但是当我尝试切换回列表视图时,什么也没得到。触发toggleListView之后,在chrome工具中,两个容器包含<shotlog shotlog="{this.state.shotLog}/"></shotlog>我需要它看起来像<ShotLog shotLog={this.state.shotLog}/>以便正确传递道具。

我不确定多余的报价来自哪里。有任何想法吗?

Treycos

您不能通过使用JSX将它们放入字符串中来创建React组件,您的代码可以缩短为以下内容:

this.state.showGraph ? <span>Graph View!</span> : <ShotLog shotLog={this.state.shotLog} />

使用三元条件,您可以根据变量的值来决定要呈现的内容, showGraph

showGraph将存储在组件的状态中,可通过进行访问this.state,当您想更改状态中某物的值时,您必须调用setState,这将导致您的组件重新呈现屏幕上的所有内容并向您显示所需的内容

工作示例:

class ShotLog extends React.Component {
  render() {
    return <div>Hi I'm a ShotLog</div>
  }
}


class App extends React.Component {
  constructor(props){
    super(props)
    this.state = { showGraph: true }
  }
  handleClick = ev => {
    this.setState({ showGraph: !this.state.showGraph })
  }
  render() {
    return (
      <div>
        {this.state.showGraph ? 
          <span>Graph View!</span> 
          : 
          <ShotLog />}
        <button onClick={this.handleClick}>Switch me !</button>
      </div>
    )
  }
}
    
ReactDOM.render(
  <App/>,
  document.getElementById('react')
)
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/16.0.0/umd/react.production.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.0.0/umd/react-dom.production.min.js"></script>
<div id="react"></div>

您可以在以下官方文档中找到JSX的基础知识:https : //reactjs.org/docs/introducing-jsx.html

您可以在此处了解有关组件状态的更多信息:https : //reactjs.org/docs/state-and-lifecycle.html

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在React中强制使用挂钩重新渲染组件?

如何在React组件中使用CDN

如何在React组件渲染中使用字体字体系列?

如何在React中使用对象数组渲染组件

如何在React / JSX中使用Eventbrite的Embedded Widget?

如何在React组件中渲染SVG

如何在React类组件中使用react-jss?

如何在JSX / React中使用三元运算符呈现多个组件?

如何在React JSX中使用Stencil的`EventEmitter`?

如何在react中使用map渲染的组件列表中的特定组件进行修改?

如何在React组件中使用样式化组件

如何在React组件的jsx和typescript中使用三元运算符?

如何在反应中使用.map渲染JSX数组

如何在React组件中使用返回字符渲染多行文本?

如何在React中使用useState或条件渲染隐藏和显示组件?

在React中使用变量渲染组件

如何在React Native中使用Ajax渲染组件?

如何在 React 样板中使用 jsx 而不是 js 扩展?

如何在 React Native 中使用函数渲染组件

如何在服务器端渲染中使用在 React 中使用 `window` 引用的组件?

如何在reactjs中使用onclick事件渲染子组件?

如何在 React 中使用条件渲染

如何在不渲染任何组件的函数中使用 React.useContext?

如何在 React 中强制渲染组件

如何在 react.js 中使用 onClick 渲染特定组件?

如何在 React 组件中使用 forwardRef?

如何在 React 中使用 filter() 控制 JSX 组件?

如何在 React 中渲染 jsx 调用非组件函数?

如何在 React JSX 循环/映射中使用 if 语句