2016-07-04 11 views
0

Я пытаюсь обновить состояние редуктора, используя: store.dispatch (NameOftheReducer (data)).Как обновить состояние в редуксе без использования метода mapDispatchToProps()

Он называет создателя Action, но не обновляет состояние редуктора. Я не хочу создавать какой-либо компонент React, откуда я хочу отправить изменение состояния. Есть ли способ сделать so..Thanks заранее

+0

Можете ли вы разместить своего создателя действия? Может быть, вы не возвращаете действие? – azium

+0

Пожалуйста, разместите содержимое своего создателя действия, а также то, как вы обрабатываете действие в своем редукторе. –

+0

Не могли бы вы объяснить 'NameOftheReducer (data)' оно должно быть 'NameOftheActionCreator (data)' вместо – webdeb

ответ

0

Давайте предположим, что в store хранится хранится где-то глобальное

, то вы можете просто

store.dispatch({ 
    type: "SOME_ACTION", 
    value: "value" 
}) 

если у вас есть actionCreator как:

function someAction(value) { 
    return { 
    type: "SOME_ACTION", 
    value: value 
    } 
} 

И теперь вы можете использовать его с отправкой:

store.dispatch(someAction("some value")) 

Я что-то пропустил?

1

Я думаю, вы неправильно поняли, как относится состояние компонента и редукса.

redux Изменение состояния осуществляется посредством действий независимо от того, какой компонент фактически использует это состояние.

Пока у вас есть создатель действия, определенный где-то, и вы управляете редуктором соответствующим action.type, тогда вы можете использовать этот создатель действия в любом компоненте.

Невозможно использовать store. store хранится в context, и это обычно считается плохой практикой, используя context. Хорошая вещь о redux заключается в том, что она позаботится об этом, предоставив вам Provider и connect.

За исключением случаев инициализации приложения, вы всегда должны использовать mapDispatchToProps, если хотите использовать создателей действия в своем компоненте.