我正在使用eslint规则react/destructuring-assignment
。我该如何破坏它?
getStuff(model = this.state.model) {
// some stuff
}
答案 0 :(得分:2)
ESLINT不允许使用this.state.model
,它建议您使用解构:
const { model: stateModel } = this.state
getStuff(model = stateModel) {
但是,我担心它是在react类组件内部。因此,您不能在方法定义之前定义const或var。您应该为该行禁用eslint:
getStuff(model = this.state.model) { // eslint-disable-line
或者,您也可以这样使用:
getStuff(model) {
const { model: stateModel } = this.state
const passedModel = model ? model : stateModel
// then work through passedModel
}
嗯,我想这应该可以解决问题:
getStuff({state: {model}} = this) {
但是,坦率地说,我从未使用过这种方法。试着让我知道。
更新:
您也可以这样使用:
getStuff(model) {
const { model: stateModel } = this.state || { model: model }
console.log(stateModel)
或者,简单地:
getStuff(model) {
const { model } = this.state || { model }
// ----------------- similar to { model: model }
console.log(model)
答案 1 :(得分:1)
据我所知,您希望从状态获取模型的默认var,并在需要时也可以传递它。
getStuff(passedModel) {
const { model } = this.state
const toUseModelInMethod = passedModel || model
// or
const toUseModelInMethod = passedModel ? passedModel : model
}
如果您只想从this.state中获取模型,那很简单
getStuff() {
const { model } - this.state
}
您还可以将状态传递给方法
getStuff({ model }) {...}
this.getStuff(this.state) // linter is not happy
// that's is better
getStuff(model){...}
const { model } = this.state
this.getStuff(model)
答案 2 :(得分:0)
您的例子不是破坏性的。函数如下所示:
function getStuff({ property1, property2 }) {
...
}
上面的示例将从任何传递给给定函数的对象中拉出property1和property2。