我已經用Relay,Redux和GraphQL設置了一個應用程序。當我火的動作,以顯示下拉狀態不更新(當我使用反應 - 終極版devtools派遣行動的狀態更新。) 我有以下作用:Redux Action沒有被解僱
export function showDropdown() {
return {
type: SHOW_DROPDOWN,
dropdownType: PROFILE_SETTINGS,
dropdownProps: {}
}
}
及以下成分
import React from 'react';
import { connect } from 'react-redux';
import { showDropdown } from '../../redux/actions/dropdownActions';
function StreamWidget() {
const onClickHandler =() => {
this.props.showDropdown();
}
return (
<div>
<a
href='#'
role='button'
onClick={ onClickHandler }
/>
</div>
);
}
export default connect(null, { showDropdown })(StreamWidget);
當我點擊鏈接我得到 Uncaught TypeError: Cannot read property 'showDropdown' of undefined
,當我改變this.props.showDropdown()
到showDropdown()
我沒有得到錯誤,但沒有任何反應STO重新不更新。
我歡迎所有關於如何解決此問題的建議。三江源
// Router
const Router = createFarceRouter({
historyProtocol: new BrowserProtocol(),
historyMiddlewares: [queryMiddleware],
routeConfig: routes,
render: createRender({}),
});
// Redux
const store = createStore(
rootReducer,
compose (
applyMiddleware(thunk),
window.__REDUX_DEVTOOLS_EXTENSION__ &&
window.__REDUX_DEVTOOLS_EXTENSION__()
)
);
// Render component into DOM element.
const render = Component => {
ReactDOM.render(
<AppContainer>
<Provider store={store}>
<Router resolver={new Resolver(environment)} />
</Provider>
</AppContainer>,
document.getElementById('root')
)
}
當我在組件 中這樣做。 '常量onClickHandler =()=> props.openTheDropdown()' 並定義 '常量mapDispatchToProps =(調度)=>({ openTheDropdown:()=> { 調度({ 類型: 'SHOW_DROPDOWN', dropdownType:'PROFILE_SETTINGS', dropdownProps:{} }) } }); 出口默認連接( 空, mapDispatchToProps )(StreamWidget)' 我仍然無法看到被解僱的行動。我認爲出於某種原因連接不正確地發送showDropdown的值.. –
在你的組件不要忘了通過this.props調用你的方法,而不只是道具。 –
您是否在點擊按鈕時看到該函數被調用? –