【发布时间】:2018-10-28 10:56:32
【问题描述】:
因此,我的代码中的所有内容都按预期工作,只有在第二次甚至第三次单击按钮时才发送发布请求...我猜它与我更新的方式有关redux 状态,但是我的大脑僵住了,谁能指出我的错误在哪里?
干杯!
class AddressScreen extends Component {
state = {
usersNickOrName: "",
usersAddress: "",
usersPhoneNumber: ""
};
onPressHandler = () => {
this.props.deliveryInfo(
this.state.usersNickOrName,
this.state.usersAddress,
this.state.usersPhoneNumber
);
let uid = this.props.uid;
axios.post(
`.../users/${uid}/info.json`,
{
nameOrNick: this.props.name,
address: this.props.address,
phoneNum: this.props.phoneNum
}
);
this.props.navigator.pop();
};
render() {
return (
<View style={styles.container}>
<AnimatedForm delay={100} distance={10}>
<AnimatedInput
onChangeText={text => {
this.setState({ usersNickOrName: text });
}}
/>
<AnimatedInput
onChangeText={text => {
this.setState({ usersAddress: text });
}}
/>
<AnimatedInput
onChangeText={text => {
this.setState({ usersPhoneNumber: text });
}}
/>
<Animated.View style={styles.buttonView}>
<TouchableOpacity
style={styles.button}
onPress={this.onPressHandler}
>
<Text style={{ color: "#fff" }}>Dodaj Info</Text>
</TouchableOpacity>
</Animated.View>
</AnimatedForm>
</View>
);
}
}
const mapStateToProps = state => {
return {
name: state.usersNickOrName,
address: state.usersAddress,
phoneNum: state.usersPhoneNumber,
uid: state.userUid
};
};
const mapDispatchToProps = dispatch => {
return {
deliveryInfo: (usersName, usersAddress, phoneNum) =>
dispatch(deliveryInfo(usersName, usersAddress, phoneNum))
};
};
export default connect(
mapStateToProps,
mapDispatchToProps
)(AddressScreen);
编辑:
我所做的是,我已将我的 redux 更新状态放入 componentWillUpdate 并将其从 onPressHandler 中删除。现在它几乎可以正常工作,例如,如果我进入 London Str. 36 它将 POST 请求 London Str. 3、它不会将最后一个字母或数字发送到服务器...这是怎么回事?
componentWillUpdate() {
this.props.deliveryInfo(
this.state.usersNickOrName,
this.state.usersAddress,
this.state.usersPhoneNumber
);
}
【问题讨论】:
-
您是否尝试过关闭所有形式的调试/日志记录?有时控制台语句或调试器会降低应用的性能。
-
嗨 Uzair,是的,我也尝试过打开 RN 调试器,但它同样只是更快,当然,我仍然需要点击按钮上的 2x 来发送发布请求。
标签: javascript reactjs react-native react-redux axios