reactjs - 单击编辑按钮时不保存输入数据
问题描述
我现在有这三种状态。当我想编辑地址时,它不会立即保存。当再次从 movit 驱动程序页面返回到个人详细信息页面时,它会显示已编辑的输入。
这是 movit 驱动程序页面
这是个人资料
这是编辑页面
从驱动程序页面返回时显示已编辑输入的异步存储可能存在一些问题。
**Address.js**
constructor(props) {
super(props)
this.state = {
address: '',
userToken: null
}
}
async componentWillMount() {
try {
let value = await AsyncStorage.getItem('userData')
let userDetails = JSON.parse(value)
console.log('userDetails 2: ', userDetails)
if (userDetails !== null) {
this.setState({
address: userDetails.address,
userToken: userDetails.token
})
}
} catch (error) {
console.log(error)
}
}
saveAddressEdit = (fieldName, fieldValue) => {
AsyncStorage.setItem(fieldName, fieldValue)
let {userToken} = this.state
var formData = new FormData()
formData.append(fieldName, fieldValue)
fetch('MyURL', {
method: 'POST',
headers: {
'X-API-KEY': 'myApiKey',
'Authorization': userToken
},
body: formData
}).then(function (response) {
console.log(response)
let data = JSON.parse(response._bodyText)
Alert.alert(data.message)
})
.catch((error) => {
console.log(error)
})
.done()
}
render() {
const {address} = this.state
return (
<Container>
<Content style={{marginHorizontal:20}}>
<Item style={{marginVertical:40}}>
<Input placeholder=" Type your Address:"
onChangeText={(address) => this.setState({address})}
value={address}
/>
</Item>
<Button full danger onPress={()=>this.saveAddressEdit('address', address)} style={{backgroundColor:'#ff0000'}}>
<Text style={{color: '#ffffff'}}>Update Address</Text>
</Button>
</Content>
</Container>
);
}
}
这是用于编辑的address.js代码。我需要的解决方案就像我想立即显示已编辑的输入。提前致谢。
解决方案
单击按钮时,您没有传递状态。将 onPress 函数调用更改为
onPress={()=>this.saveAddressEdit('address', this.state.address)}
另外,更改 TextInput 值
值={this.state.address}
并且不要尝试使用与 onTextChange 回调中的常量相同的名称
所以你的最终渲染功能是
render() {
return (
<Container>
<Content style={{marginHorizontal:20}}>
<Item style={{marginVertical:40}}>
<Input placeholder=" Type your Address:"
onChangeText={(address) => this.setState({address:address})}
value={this.state.address}
/>
</Item>
<Button full danger onPress={()=>this.saveAddressEdit('address', this.state.address)} style={{backgroundColor:'#ff0000'}}>
<Text style={{color: '#ffffff'}}>Update Address</Text>
</Button>
</Content>
</Container>
);
}
推荐阅读
- bash - 有没有办法在 shell 中对日期进行排序,但 Jan 迟于 12 月来?
- hadoop - Hive 计数不同的 UDAF2
- android - Android WorkManager fork 单个成多个链并加入
- python - 如何在python中将一维值列表转换为0和1的二维网格
- javascript - 如何使用 javascript/nodejs 求解方程?
- facebook - Facebook Marketing API 中的字段和参数有什么区别?
- python - Keras - 如何基于一个实例进行预测?
- javascript - 我可以从 RS256 公钥中删除新的行编码以存储在 .env 文件上,以便在带有前端 javascript 应用程序的浏览器上使用吗?
- windows-services - Fiddler 未捕获来自 C# Windows 服务的请求
- ruby-on-rails - 参数未从邮件程序传递到 html.erb 文件