【发布时间】:2019-05-02 10:19:18
【问题描述】:
我正在尝试使用将验证输入的回调。
当我尝试在文本框中输入内容时,出现以下错误。有人可以帮助我为什么会出现错误以及如何纠正它。
不允许回调吗?我错过了什么?
未捕获的错误:对象作为 React 子对象无效(发现:对象与键 {dispatchConfig、_targetInst、nativeEvent、type、target、currentTarget、eventPhase、bubbles、cancelable、timeStamp、defaultPrevented、isTrusted、isDefaultPrevented、isPropagationStopped、_dispatchListeners ,_dispatchInstances})。如果您打算渲染一组子项,请改用数组。 在 div 中(由 HelloWorldWithPropertiesES5 创建) 在 HelloWorldWithPropertiesES5 中(由 Parent2 创建) 在 Parent2 中(由 App 创建) 在 div 中(由 App 创建) 应用内 在不变量(react-dom.development.js:55)
import * as React from 'react';
interface IProps{
userName?:string
}
const HelloWorldWithPropertiesES5= (props:IProps)=>{
return (
<div>
Hello {props.userName}
</div>
)
}
export default HelloWorldWithPropertiesES5;
import * as React from 'react'
interface IProps {
userName : string;
onChange : (event:any) => void;
}
export const NameEditComponent = (props : IProps) =>
<>
<h2>this shows event changes</h2>
<label>Update name:</label>
<input value={props.userName}
onChange={props.onChange}
/>
</>
export default NameEditComponent;
import * as React from 'react';
import HelloWorldWithPropertiesES5 from 'src/Lesson2-Properties/HelloES5';
import NameEditComponent from './MyChild';
interface IState {
userName : string;
}
export class Parent2 extends React.Component<{},IState> {
constructor(props:any) {
super(props);
this.state = {userName: 'defaultUserName'};
}
public setUsernameState = (newName:string) => {
this.setState({userName:newName},()=>this.validateName());
}
public validateName () {
if (this.state.userName.length === 0) {
alert('error')
}
}
public render() {
return (
<>
<HelloWorldWithPropertiesES5 userName={this.state.userName} />
<NameEditComponent userName={this.state.userName} onChange={this.setUsernameState} />
</>
);
}
}
export default Parent2;
【问题讨论】:
标签: reactjs typescript