如何解决发布到API时不反映React Native State Update
大家好,在此先感谢您的帮助。 我正在实现一个由其他开发人员野蛮开发的RN应用。问题很简单,我们有3个选择器,它们在更改后会更新状态,然后在按下保存按钮时会将数据发送到API并相应地更新屏幕。它与该语言完美配合,但是在某种程度上不能与压力和长度系统一起使用。在控制台中,我可以正确看到新状态,并且在发布后检查“网络”选项卡时,我看到正确的值已发送到API,但是发布后的屏幕没有更新,并且注销然后重新登录时,我仍然看到错误的信息值。现在已经尝试了一段时间,但我无法解决。同样,以前的开发人员也不回答,也不愿意提供任何帮助。
这是工作选择器及其相关功能:
renderPicker = () => {
const {user} = this.state;
const {languages} = this.props;
let language = user.locale;
if (languages) {
let lang = languages.find(l => language === l.id);
if (lang) {
language = lang.name;
}
}
return styles.isIOS ? (
<Text
style={styles.localeValue}
onPress={() => {
this.setState({pickerVisible: true});
}}>
{language}
</Text>
) : (
<Menu>
<MenuTrigger
text={language}
customStyles={{
triggerText: styles.localeValue,}}
/>
<MenuOptions>
{languages.map(lang => (
<MenuOption
key={lang.id}
text={lang.name}
customStyles={{
optionWrapper: styles.optionWrapper,}}
onSelect={() => {
this.onChangeText('locale')(lang.id);
}}
/>
))}
</MenuOptions>
</Menu>
);
};
sendProfile = () => {
const {postProfile} = this.props;
const {user} = this.state;
postProfile({
...user,phone: user.phone || undefined,});
console.log(user);
};
save = () => {
const {user: prevUser} = this.props;
const {user} = this.state;
if (prevUser.email !== user.email) {
AlertsService.show({
title: 'ProfileScreen.emailChanged',icon: 'exclamation-triangle',buttons: [
{
text: 'ProfileScreen.save',onPress: this.sendProfile,},{text: 'ProfileScreen.cancel',type: 'grey'},],});
} else {
this.sendProfile();
}
};
submitPicker = () => {
const {language} = this.state;
this.setState(
{
pickerVisible: false,() => {
this.onChangeText('locale')(language);
},);
这是两个不起作用的地方之一
renderLenPicker = () => {
const {user} = this.state;
return styles.isIOS ? (
<Text
style={styles.localeValue}
onPress={() => {
this.setState({lenPicker: true});
}}>
{user.length_system === 'si'
? 'International System'
: 'Imperial System'}
</Text>
) : (
<Menu>
<MenuTrigger
text={
user.length_system === 'si'
? 'International System'
: 'Imperial System'
}
customStyles={{
triggerText: styles.localeValue,}}
/>
<MenuOptions>
<MenuOption
key={user.length_system}
text={user.length_system}
customStyles={{
optionWrapper: styles.optionWrapper,}}
onSelect={() => {
this.onChangeText('length_system')(user.length_system);
}}
/>
</MenuOptions>
</Menu>
);
};
closeLenPicker = () => {
const {user: currentUser} = this.state;
this.setState(
{
lenPicker: false,() => {
this.onChangeText('length_system')(currentUser.length_system);
},);
};
submitLenPicker = () => {
const {user} = this.state;
this.setState(
{
lenPicker: false,() => {
this.onChangeText('length_system')(user.length_system);
},);
};
这是应用程序状态
constructor(props) {
super(props);
const {
first_name,last_name,username,email,phone,locale,length_system,pressure_system,} = props.user;
this.state = {
focusedInput: null,pickerVisible: false,lenPicker: false,pressPicker: false,language: locale,user: {
first_name,};
}
有人可以帮我吗?
谢谢
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。