我有以下状态结构:
var newData = this.state.items.slice(); //copy array
this.setState({
...this.state,
data: { ...this.state.data, tags: newData }
});
当我提交数据时,我正在尝试为items数组分配items数据。
newData
tags
包含所有变量,但console.log(this.state.data.tags, this.state.items);
始终为空。
如何将完全相同的值分配给标签数组?
这是我的控制台日志:
onSubmit = (e) => {
e.preventDefault();
const errors = this.validate(this.state.data);
this.setState({ errors });
if (Object.keys(errors).length === 0) {
this.setState({ loading: true });
this.setState(prevState => ({
data: {
...prevState.data,
tags: prevState.items
}
}));
console.log(this.state.data.tags, this.state.items);
this.props
.submit(this.state.data)
.catch(err =>
this.setState({ errors: err.response.data.errors, loading: false })
);
}
};
更新
<?php
mysql_connect("localhost", "root", "");
mysql_select_db("hospital");
$user = $_GET['username'];
$pass = $_GET['password'];
$query = "SELECT * FROM receptionist WHERE nama_receptionist = '$user'";
$hasil = mysql_query($query);
$data = mysql_fetch_array($hasil);
$password = $data['password'];
if ($pass == $password) $response = "TRUE";
else $response = "FALSE";
header('Content-Type: text/xml');
echo "<?xml version='1.0'?>";
echo "<data>";
echo "<response>".$response."</response>";
echo "</data>";
?>
答案 0 :(得分:2)
当您设置状态时,您不会将当前状态传播到您正在传递的对象中。 setState
接收对象作为其第一个参数,仅更新该对象中的键。所以,例如,如果我们有:
this.state = {
a: 1,
b: 2
};
使用此:
this.setState({
b: 3
});
只会更新b
。 a
不会受到影响。另请注意,setState
是异步的 - 并且不能保证在setState
内引用状态是安全的。因此,React为您提供了一个回调以访问以前的状态:
this.setState(prevState => ({
data: {
...prevState.data,
tags: prevState.items
}
}));
这只会更新状态中的data
对象,而只更新tag
属性,使用之前的状态items
数组。