Реагировать - Redux connect () () ясность синтаксиса - PullRequest
0 голосов
/ 08 января 2020

Я только начал изучать реактив-редукс и запутался в синтаксисе, указанном в функции соединения редуктора.

Насколько я понимаю, обычную функцию мы определяем и вызываем следующим образом:

//function definition
function fun_name(arg){
    //do some operations
}


// function calling
fun_name('my_argument');

В реакции обнаружена какая-то интересная строка

export default connect(mapStateToProps, mapDispatchToProps)('SomeComponentName');

Но здесь приведенная выше строка вызывает функцию connect с двумя аргументами mapStateToProps, mapDispatchToProps. И последний он определил ('SomeComponentName')

Кто-нибудь знает, какой тип синтаксиса "connect () ()" или он является частью экспорта?

Ответы [ 3 ]

2 голосов
/ 08 января 2020

Это называется curry в JS.

Curring - это преобразование функций, которое переводит функцию из вызываемого в f (a, b, c) в вызываемое как f (a) (b) (c).

Каррирование не вызывает функцию. Это просто преобразует его.

источник https://javascript.info/currying-partials

например

function outer(){
  return inner
}

function inner(){
 console.log("I got called")
}

outer()()
1 голос
/ 08 января 2020

Функция connect() возвращает другую функцию, которую необходимо вызвать, и для которой требуется параметр, являющийся компонентом.

As connect() Возвращает состояний документации:

Возвращение connect () - это функция-оболочка, которая берет ваш компонент и возвращает компонент-оболочку с дополнительными подпорками, которые он добавляет. В большинстве случаев функция-обертка вызывается сразу, без сохранения во временной переменной: export default connect(mapState, mapDispatch)(Login).

Вы можете подумать примерно так, как в следующем фрагменте кода:

const connectedFunction = connect(mapStateToProps, mapDispatchToProps);
export default connectedFunction(SomeComponentName);

Рекомендуется прочитать обзор connect(): https://react-redux.js.org/api/connect#overview

Надеюсь, это поможет!

1 голос
/ 08 января 2020

По сути, connect - это метод, который возвращает другой метод.

Итак, когда вы делаете connect(), он вызывает метод connect и возвращает метод, который вызывается вторым (), когда вы делаете connect()().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...