我想定义一个包含两个state值的新数组。这个数组将被发送到api。我的第一个方法是:
const userRoles = {
userName: this.state.userName,
roles: this.state.userRoles
};
putData('api/User/EditUserRoles', userRoles).then((result) => {
const responseJson = result;
if (responseJson) {
this.setState({ msg: "User's roles updated successfully!" });
}
});
但是在我启用了之后eslint - react/destructuring-assignment出现以下错误:
- (property) userName: string必须使用解构状态assignmenteslintreact/destructuring-assignment
- (属性)userRoles: string[]必须使用解构状态赋值lintreact/destructuring-assignment
所以我把代码改成
const { userName, userRoles } = this.state;
const userNameBuffer = userName;
const userRolesBuffer = userRoles;
const userRolesArrayBuffer = {
userName: userNameBuffer,
roles: userRolesBuffer
};
putData('api/User/EditUserRoles', userRolesArrayBuffer).then((result) => {
const responseJson = result;
if (responseJson) {
this.setState({ msg: "User's roles updated successfully!" });
}
});
工作,但我不高兴使用额外的"缓冲区"变量。有没有办法让这段代码写得更"漂亮"?(例如no "buffer"变量)与考虑反应/解构分配?
感谢您的每一个回答,并为我的英语可能出现的任何错误感到抱歉。
你不需要在缓冲区中保存变量,更优雅和常见的方法是:
const { userName, userRoles } = this.state;
const userRolesBuffer = {
userName, // its not mistake, in object variables with same name can be assigned like this
roles: userRoles
};
putData('api/User/EditUserRoles', userRolesBuffer).then((result) => {
const responseJson = result;
if (responseJson) {
this.setState({ msg: "User's roles updated successfully!" });
}
});
答案似乎很简单,我误解了什么。
我认为有必要声明一个像
这样的数组const exampleArray = {
key1: "value1",
key2: "value2"
}
JSON.stringify(exampleArray)的结果;看起来像
{
"key1": "value1",
"key2": "value2"
}
但是似乎
const key1 = "value1";
const key2 = "value2";
const exampleArray = {
key1,
key2,
}
返回相同的结果…
所以我的代码,匹配react/destructuring-assignment最终看起来像
const { userName, userRoles } = this.state;
const roles = userRoles;
putData('api/User/EditUserRoles', { userName, roles }).then((result) => {
const responseJson = result;
if (responseJson) {
this.setState({ msg: "User's roles updated successfully!" });
}
});
谢谢你的回答…尤其是德米迪乌克^^