如何修复 React 中的 eslint 解构状态分配?
how to fix eslint distructuring state assignment in react?
constructor(props) {
super(props);
const { data, image0, image1, image2, image3, image4 } = this.props;
this.state = {
data : data,
image0: image0,
image1: image1,
image2: image2,
image3: image3,
image4: image4,
};
}
renderList = () => {
const { data } = this.state;
const List = data.map((item, index) => {
return (
<Card
key={index}
data={item}
preview={this.state[`image${index}`]}
/>
);
})
}
...
这是我的部分组件代码。
我们现在采用 Eslint。
此代码抛出错误 'Must use destructuring state assignment(react/distructuring-assignment)'。
如何修复它们???
我们的团队不想为代码关闭此 eslint 规则(react/distructuring-assignment)。
首先,用道具初始化你的状态不是一个好主意。事实上它是一个 React anti-patterns。你可以使用 react life-cycle 方法 componentWillReceiveProps
来实现这个。
现在回答您的实际问题,您可能想要像这样保存一组图像:
constructor(props) {
this.state = {images: []}
}
// props.images contains this array ["image0", "image1", "image2", "image3", "image4"]
componentWillReceiveProps(nextProps){
if (nextProps.images !== this.props.images) {
this.setState({ images: nextProps.images })
}
}
render(){
const { data } = this.state;
const List = data.map((item, index) => {
const { images } = this.state; // destruct images property from this.state
return (
<Card
key={index}
data={item}
preview={images[index]}
/>
);
})
}
constructor(props) {
super(props);
const { data, image0, image1, image2, image3, image4 } = this.props;
this.state = {
data : data,
image0: image0,
image1: image1,
image2: image2,
image3: image3,
image4: image4,
};
}
renderList = () => {
const { data } = this.state;
const List = data.map((item, index) => {
return (
<Card
key={index}
data={item}
preview={this.state[`image${index}`]}
/>
);
})
}
...
这是我的部分组件代码。 我们现在采用 Eslint。 此代码抛出错误 'Must use destructuring state assignment(react/distructuring-assignment)'。 如何修复它们??? 我们的团队不想为代码关闭此 eslint 规则(react/distructuring-assignment)。
首先,用道具初始化你的状态不是一个好主意。事实上它是一个 React anti-patterns。你可以使用 react life-cycle 方法 componentWillReceiveProps
来实现这个。
现在回答您的实际问题,您可能想要像这样保存一组图像:
constructor(props) {
this.state = {images: []}
}
// props.images contains this array ["image0", "image1", "image2", "image3", "image4"]
componentWillReceiveProps(nextProps){
if (nextProps.images !== this.props.images) {
this.setState({ images: nextProps.images })
}
}
render(){
const { data } = this.state;
const List = data.map((item, index) => {
const { images } = this.state; // destruct images property from this.state
return (
<Card
key={index}
data={item}
preview={images[index]}
/>
);
})
}