微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

React onChange 上的两种方式绑定不起作用

如何解决React onChange 上的两种方式绑定不起作用

在第二个 <Person/> 组件上,我有道具 nameChanged = {this.nameChangeHandler},其中我使用了双向数据绑定,但它不起作用,我认为我没有遗漏任何东西。
控制台没有错误

<div>
    <p onClick={props.click}>My name is {props.name} and I am {props.age} Year old!</p>
    <p>{props.children}</p>
    <input type="text" onChange={props.changed}/>
</div>

nameChangeHandler = (event) => {
    this.setState = ({
        persons:[
            {name:"Roja",age: 34},{name: event.target.value,age: 35},{name:"Manu",age: 45}
        ]
    })
}

<Person 
    name = {this.state.persons[1].name} 
    age = {this.state.persons[1].age} 
    click={this.switchNameHandler.bind(this,"SammRad")}
    changed={this.nameChangeHandler}>
        My hobbies are Racing
</Person>

App component Person component

解决方法

您需要将 person 组件重命名为 Person,注意大写。而且,我认为即使那样它也不会正确编译,组件看起来很奇怪,所以试试这个。

import React,{ Fragment } from 'react'; 

const Person = (props) => 
<Fragment>
    My name is {props.name} and I am {props.age} Year old!
    {props.children}
</Fragment>

export default Person;

您应该始终将组件的内容包装在父组件中。如果你没有顶级父组件作为包装器,你可以使用 Fragment 代替,它基本上是一个空组件来帮助你在这种情况下并允许 React 编译,它甚至不打印任何东西在 HTML 上。

此外,您应该使用提供此类提示的 IDE,我建议您使用 Visual Studio Code

希望这对您有所帮助。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。