如何使用React更改元素的innerHTML?

时间:2019-07-12 18:03:52

标签: javascript html reactjs

当我单击按钮时,我想更改>>> 1st_str = "shoes, 12, 29.99" >>> split_str = 1st_str.split(',') >>> split_str ["shoes", "12", "29.99"] >>> split_str[0] 'shoes' >>> split_str[1] '12' >>> split_str[2] '29.99' 中的innerHTML。我不知道为什么,但是它不会出现错误或获得预期的结果,而是删除了内容并替换为div

我如何使它工作?

"[object Object]"

2 个答案:

答案 0 :(得分:3)

使用react不必设置innerHtml来执行此操作,相反,更典型的方法是在组件中具有内部状态并基于此状态有条件地呈现SignIn组件。要使用状态组件必须是类或使用钩子,类是更传统的,所以我将组件更改为类。

要使类成为React组件,您需要使用React.Component扩展该类,这是因为React组件具有很多内部行为,您需要将其包含在类中才能将其视为组件。

所以

class App extends React.Component {
  constructor(props) {
    super(props);
    this.state = {
      signIn: false,
    };

    this.LoginOnClick = () => {
      this.setState({ signIn: true });
    };
  }

  render() {
    if (this.state.signIn) {
      return (
        <div className="container">
          <SignIn />
        </div>
      );
    }

    return (
      <div className=“container”>
        <button onClick={this.LoginOnClick}>Login</button>
        <Login />
      </div>
    );
  }
}

答案 1 :(得分:3)

您可以使用Hooks(在React 16.8中添加)。

import React, {useState} from 'react';
import Login from './components/login.js';
import SignIn from './components/signin';

import './App.css';

function App() {
  const [signIn, setSignIn] = useState(false); 
  return (
    <div className="container" id="wrapper">
      {signIn ? <SignIn /> : <> //This is React Fragments syntax
      <button onClick={() => setSignIn(true)}>Login</button>
      <Login />
      </>
      }
    </div>
  );
}

export default App;