在我的应用程序中,我有一些用户需要填写的字段。当该字段为空时,它显示值为null。当我在输入字段中输入内容时,它假定相同的值没有问题。
我的问题是当我有一个包含信息的输入字段时,当我删除它的值时,这就是它的显示内容:
您可以看到该值的确为空。这是通过使用以下代码行在此方法上完成的:
handleChange(event, index) {
if (event.target.value == '') {
event.target.value = null;
}
(...)
}
但是,当将此名称发送到我的API时,该名称显示为不是“ null”而是“”,
这是我打印此值的方式:
window.alert("test->-> " +JSON.stringify(jsonPlayer.playerName))
我从中得到的结论是JSON.stringify将我的空值转换为“”,我希望该值为空而不是“”。 发送到我的API时也会发生这种情况,因为我也需要对对象进行字符串化:
return fetch(url, {
method: 'POST',
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json',
'Access-Control-Allow-Origin': '*'
},
body: JSON.stringify({
player: param
})
有没有任何方法可以将stringify放置的“”转换为null而不使用连续的if子句?
谢谢。
使用更多代码更新:
初始状态:
this.state = {
playerList: {
player: [
{
idPlayer: null,
playerName: null,
broadcastChannel: null,
clusterName: null,
playerAlias: [
{
name: null
}
]
}
]
},
newAlias: null
}
完全句柄更改方法:
handleChangeFirstChild(event, index) {
if (event.target.value === "") {
this.state.playerList.player[index].playerName=null;
}
const player = [...this.state.playerList.player]
player[index] = {
...player[index],
[event.target.name]: event.target.value
}
window.alert("player's name no JSON.stringify: " + player[index].playerName)
window.alert("player's name with JSON.stringify: " + JSON.stringify(player[index].playerName))
this.setState(prevState => ({
...prevState,
playerList: {
...prevState.playerList,
player: [
...player,
]
}
}))
}
第一张照片:
第二次打印:
为清楚起见,api收到什么:
答案 0 :(得分:0)
尝试避免使用event.target.value = null
:
if (event.target.value === '') {
this.setState({...jsonPlayer,playerName: null})
// if no render needed:
// jsonPlayer.playerName = null;
return;
}
...
在这种情况下:
JSON.stringify(jsonPlayer.playerName) // 'null'