Один из способов добиться этого - использовать синтаксис параметров по умолчанию , например:
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>
))