【发布时间】:2019-09-29 22:03:44
【问题描述】:
已解决请参阅下面的评论(只需将选择器和部分功能移到类组件之外即可使其工作。
所以我对 react onChange 函数有问题。当它作为道具传递给组件时,它似乎不起作用。我试图传递组件而不是数据,但它仍然不起作用。请考虑以下示例:
export default class Parent extends Component {
constructor(props) {
super(props)
this.state = {
type: '1',
number: ''
}
}
handleChange = e => {
const { name, value } = e.target
this.setState({ [name]: value })
}
render() {
return (
<div className="App">
<Form
type={this.state.type}
number={this.state.number}
handleChange={this.handleChange}
/>
</div>
}
}
//receiving the props
export default class Child extends Component {
constructor(props) {
super(props)
}
render() {
const Chooser = ({ type, section }) => {
switch (type) {
case '1':
return <Fragment>{section}</Fragment>
default:
return <Fragment>></Fragment>
}
}
const Section = ({ number, handleChange }) => (
<Fragment>
<div>
<label>Number</label>
<input
type='text'
name='number'
placeholder='123456789'
value={number}
onChange={handleChange}
/>
</div>
</Fragment>
)
return (
<Chooser
type={this.props.type}
section={
<Section
number={this.props.number}
handleChange={this.props.handleChange}
/>
}
/>
)
}
}
有趣的是,如果我将 onChange 放在 Section 级别,它确实有效。但这不是我想要的,因为传递的组件可能有多个我想要传递的 Input 函数。
return (
<Chooser
type={this.props.type}
section={
<Section
number={this.pops.number}
onChange={this.pops.handleChange}
/>
}
/>
知道如何使用道具传递 onChange 函数吗?在类似的示例中,输入更改确实有效,但每次按下值时都会失去焦点。已经尝试分配键,但也没有用。
【问题讨论】:
-
你能分享一下你所说的输入改变失去焦点的类似例子的代码吗?