Что делают окружающие скобки в круглых скобках в операторе возврата функции стрелки ES6? - PullRequest
0 голосов
/ 11 октября 2019

Например, в редукционных действиях, я видел в чьем-то коде:

export const updateMessage = text => {
   return (dispatch) => {
     dispatch(updateChatMessage(text))
   }
}

и:

const updateChatMessage = text => ({
   type: types.someActionType,
   text
})

похоже, что он подразумевает return, но ядумал, что это уже подразумевалось в скобках функций стрелки после жирной стрелки.

Что делает скобка ({...})? они необходимы? Есть ли альтернативный способ сделать то же самое?

Ответы [ 4 ]

3 голосов
/ 11 октября 2019

когда вы пишете myFunction = value => ({prop: value}), он возвращает объект {prop: value}, в этом случае {} является разделителем объекта, а не «разделителем функции»

const updateChatMessage = text => ({
   type: types.someActionType,
   text
})

, например,

если вы хотите умножить на два каждый элемент массива, вы можете написать:

array.map(elem => {return elem * 2})

или

array.map(elem => elem * 2) // тот же результат

и если вы хотите, например, с (), который обертывает объект в буквальном смысле:

let array = [{val: 2},
             {val: 4},
             {val: 8},
             {val: 16}];
             
let output = array.map( ({val}) => ({val: val*2}) );

console.log(output);
1 голос
/ 11 октября 2019

Как указано в функциях стрелок docs ,

// Заключить в скобки тело функции, чтобы вернуть литеральное выражение объекта:

params => ({foo: bar})

Это означает, что если вы хотите неявно вернуть объект, вам нужно заключить его в скобки.

Без этого код внутри фигурных скобок будет рассматриваться как функциятело, а не объект (как вам хотелось бы)

Следующее эквивалентно:

params => { return {foo: bar}} // Explicitly return an object (from function body)
params => ({foo: bar}) // Implicitly return an object by wrapping it with parentheses
1 голос
/ 11 октября 2019

Если вы заключите скобки в круглые скобки, вы заставите свою функцию возвращать объектный литерал (поэтому вам не нужно ключевое слово return). Если вы не используете скобки, вы должны использовать ключевое слово return.

0 голосов
/ 11 октября 2019

В первом примере {} используются для идентификации нескольких строк кода, поэтому возврат необходим для получения чего-то отличного от undefined.

Во втором примере{} используются для создания объекта.

...