是有可能同时保持对象作为参数的内部进行破坏的对象的属性array.map()
函数?
基于这个问题,我尝试以下,但失败(分析错误)
this.state.files.map(((file, {param1, param2} = file), i) => (
<div key={i}>
<p>{param1}</p>
<button onClick={this.editFile(file)} />
</div>
)
是有可能同时保持对象作为参数的内部进行破坏的对象的属性array.map()
函数?
基于这个问题,我尝试以下,但失败(分析错误)
this.state.files.map(((file, {param1, param2} = file), i) => (
<div key={i}>
<p>{param1}</p>
<button onClick={this.editFile(file)} />
</div>
)
代替使用lambda组分使它像这样的功能块
this.state.files.map(((file, i) => {
const {param1, param2} = file;
return (
<div key={i}>
<p>{param1}</p>
<button onClick={() => this.editFile(file)} />
</div>
)}
)
实现这一目标的一种方法是使用默认参数的语法 ,就像这样:
const test = (input, { a, b } = input) => [ a, b ]
console.log(test({ a: 1, b: 2 })) // [ 1, 2 ]
没有第二个参数被传递到上述的功能,所以第二个参数默认为第一个参数,那么它被破坏。
它已被宣布后才能使用的参数,所以这是行不通的:
const test = ({ a, b } = input, input) => [ a, b ]
console.log(test(undefined, { a: 1, b: 2 }))
// Uncaught ReferenceError: input is not defined at test
如果没有参数传递,这也只能工作在这样传递给回调的情况下, Array#map
,你必须申报所有的参数传递,这样就可以声明默认参数。
有了您例如,它应该是这样的:
this.state.files.map((file, i, files, { param1, param2 } = file) => (
<div key={i}>
<p>{param1}</p>
<button onClick={this.editFile(file)} />
</div>
))