【问题标题】:how to get a button element to change an h1 element in Reactjs?如何获取按钮元素来更改 Reactjs 中的 h1 元素?
【发布时间】:2020-05-15 11:29:07
【问题描述】:

我正在尝试制作 react 应用程序,其中我有一个按钮,该按钮会导致我的屏幕上的 h1 元素显示从 npm 包生成的笑话。我可以告诉 npm 包已成功安装(通过检查我的 console.log 元素),但我似乎无法获得更改现有 h1 的按钮。代码编译时我没有收到错误消息。

import React from 'react'

var oneLinerJoke = require('one-liner-joke');
var getRandomJoke = oneLinerJoke.getRandomJoke();
console.log(getRandomJoke)



function getJoke(){
  let h1 = document.querySelector('h1');
let changedH1 = document.getElementById('jokeline').innerHTML={getRandomJoke};
  return changedH1;
}

const Template = (props) => {
  return(
    <div>
<h1 id='jokeLine'>Click the button to read a joke</h1>
<button onclick= 'getJoke()'>Get ready to laff</button>

    </div>
   )

 }

export default Template

【问题讨论】:

  • React 组件根本不是这样工作的。尝试阅读stateh1 中显示的文本可能是组件状态的一部分,单击按钮将更新该状态。

标签: javascript html reactjs npm


【解决方案1】:

使用 React 状态保存笑话并将其显示到屏幕上。如果不是真的需要,不要直接操作 DOM。我已经更新了代码状态,您可以通过在最后运行来检查。

我在 React 的功能组件中使用了 react 钩子来使用状态功能。

import React, {useState} from 'react'
import oneLinerJoke from 'one-liner-joke';


const Template = (props) => {
 const [joke, setJoke] = useState(null);

 const getJoke = () => {
    setJoke(oneLinerJoke.getRandomJoke());
 }

  return(
    <div>
<h1 id='jokeLine'>{joke ? joke : 'Click the button to read a joke'}</h1>
<button onclick= 'getJoke()'>Get ready to laff</button>

    </div>
   )

 }

export default Template

【讨论】:

  • 用我的代码替换了这个。不幸的是没有效果
  • 应该是onClick,值应该是一个函数而不是字符串,注意getRandomJoke返回一个object
  • @jonrsharpe 你能详细说明一下吗? onClick 应该是什么?什么应该是函数而不是字符串?
猜你喜欢
  • 1970-01-01
  • 2020-10-16
  • 2020-02-26
  • 1970-01-01
  • 2017-05-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多