Нужны ли мне bindActionCreators? - PullRequest
0 голосов
/ 03 июля 2018

Я читал этот пост и заметил, что он не использует метод bindActionCreators, поставляемый с redux, почему это так?

Разве мне это не нужно?

вот этот пост: https://medium.com/@stowball/a-dummys-guide-to-redux-and-thunk-in-react-d8904a7005d3

Почему он существует, если вы не должны его использовать? Я в замешательстве.

Я сделал, как он сказал в посте:

function matchDispatchToProps(dispatch){
    return {
        fetchQp: (url) => dispatch(qpFetchData(url))
    };
}

Какая разница в том, чтобы делать это против, используя bindActionCreators?

Ответы [ 2 ]

0 голосов
/ 03 июля 2018

Все эти примеры эквивалентны:

function mapDispatchToProps(dispatch) {
    return {
        fetchQp : (url) => dispatch(qpFetchData(url))
    }
}

function mapDispatchToProps(dispatch) {
    return bindActionCreators({fetchQp : qpFetchData}, dispatch);
}

const mapDispatchToProps = {
    fetchQp : qpFetchData
}

// in all three cases, used as:
export default connect(mapStateToProps, mapDispatchToProps)(MyComponent);

Лично я рекомендую использовать третью форму («сокращение от объекта»). Просто передайте объект, полный создателей действий, в качестве второго аргумента connect, и Redux автоматически использует bindActionCreators внутри - нет веской причины для написания отдельной функции mapDispatch самостоятельно.

0 голосов
/ 03 июля 2018

Как официальная документация гласит:

Единственный вариант использования bindActionCreators - это когда вы хотите передать некоторые создатели действий до компонента, который не знает о Redux, и вы не хочу передавать ему отправку или магазин Redux.

Как насчет поста, который вы упомянули - этот парень действительно связывает свой компонент с Redux - так что он не может явно использовать bindActionCreators.

...