定义状态子数组的最佳方式,同时考虑了react/destructuring-assign



我想定义一个包含两个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出现以下错误:

  1. (property) userName: string必须使用解构状态assignmenteslintreact/destructuring-assignment
  2. (属性)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!" });
}
});

谢谢你的回答…尤其是德米迪乌克^^

相关内容

  • 没有找到相关文章