我面临设置状态onChange
的问题。
后面的handleChangeInputMobile
仅给出当前值,而不给出当前目标。
对于手机号码字段验证,我尝试使用PhoneInput
中的react-phone-number-input
。
但是我面临着更新状态onChange
的问题。
class Form extends Component {
state = {
data: {
firstName: "",
lastName: "",
mobile: "",
email: "",
password: "",
confirm_password: ""
},
errors: {},
disabled: true
};
handleChangeInputMobile({ currentTarget: input }) {
// I am not able to get current target here. It gives only value
const data = { ...this.state.data };
data[input.name] = input.value;
this.setState({ data });
}
render() {
const { mobile } = this.state.data;
<Mobile
handleChangeInputMobile={this.handleChangeInputMobile}
mobile={mobile}
/>;
}
}
export default Form;
import PhoneInput from "react-phone-number-input";
class Mobile extends Component {
render() {
const { handleChangeInputMobile } = this.props;
const { mobile } = this.props;
return (
<div>
<PhoneInput
country="IN"
id="mobile"
name="mobile"
value={mobile}
onChange={handleChangeInputMobile}
/>
</div>
);
}
}
export default Mobile;
答案 0 :(得分:2)
尝试将input.value
更改为e.target.value
,如下所示:
handleChangeInputMobile = (e) => {
this.setState({
[e.target.id]: e.target.value
})
}
答案 1 :(得分:1)
根据docs,
来自{{1}的onChange
的 PhoneInput
道具直接与react-phone-number-input
一起使用,您需要显式发送value
。
name
您的onChange={mobile => handleChangeInputMobile(mobile,"mobile")}
函数应该是
handleChangeInputMobile
注意:您正在直接突变handleChangeInputMobile(value,key) {
this.setState(prevState => ({data: {...prevState.data, [key]: value}}), ()=> console.log(this.state))
}
,应使用state
并更新状态,如上所示。
在您的prevState
组件中,您忘记了Form
,可能是错字。
答案 2 :(得分:0)
您只能使用react-phone-number-input
访问该值,因此必须将密钥作为参数传递。
handleChangeInputMobile = (value, key) => {
this.setState({ [key]: value });
}
<PhoneInput
country="IN"
id="mobile"
name="mobile"
value={mobile}
onChange={value => handleChangeInputMobile(value, 'mobile')}
/>