【发布时间】:2023-03-21 10:07:17
【问题描述】:
我正在尝试使用 onClick 侦听器更改 App.js 中的状态,该侦听器接收 DOM 元素的值以获取值。这将允许我更改 jsx 呈现给 DOM 的内容。这类似于更改网站上的页面,但是我希望这一切都在一个区域内完成。
然而,到目前为止,我一直得到一个未定义的 DOM 元素值。
我认为问题可能源于我如何编写函数或如何将其传递到导航栏组件中。
状态
state = {
page: 'Home'
}
换页功能
changePage = event => {
const { name, value } = event.target;
this.setState({
page: value
})
}
它是如何传递到导航组件的
<Navbar changePage={this.changePage} value1={this.state.page} link1={"About"} link2={"Portfolio"} link3={"Contact"} />
导航组件
import React from 'react';
function Navbar(props) {
return (
<div className='row'>
<h5 className='col s4 waves-effect center-align' name={props.link1} value={props.link1} onClick={(event) => props.changePage(event)}>{props.link1}</h5>
<h5 className='col s4 waves-effect center-align' name={props.link2} value={props.link2} onClick={props.changePage}>{props.link2}</h5>
<h5 className='col s4 waves-effect center-align' name={props.link3} value={props.link3} onClick={props.changePage}>{props.link3}</h5>
</div>
)
}
export default Navbar
当我单击导航组件中的第一个时,我希望使用我从父组件传递给它的函数,它将获取值并将状态更改为值。相反,我得到一个未定义的值。
【问题讨论】:
-
a
h5元素的值将是innerText我认为。但是,您应该只在回调本身中传递您想要的内容,而不是那样做。这样它就更明确了。onClick={(e) => props.changePage(e, link1)}这样您只需给出值,代码中的一个潜在错误可能是如果某些内容编辑了元素的 innerText,您的代码将无法工作。最好保持明确/更多指令:)
标签: reactjs