2016-11-05 85 views
0

我想了解REDX传奇是如何工作的,实现一个简单的例子(一个按钮,当点击从API获取用户,然后减速器将此用户添加到商店)与反应,还原和反应 - 还原。如何使用REDX和react-redux的REDX传奇

这里是我的传奇(与console.logs用于调试):

import { take, call, put } from 'redux-saga/effects'; 

import { GET_USER, setUser } from './actions/actionCreators'; 

export default function * watchFetchUser() { 
    console.log('Inside saga'); 
    yield take(GET_USER); 
    console.log('Received click'); 
    const URL = 'http://uinames.com/api/?ext'; 
    const user = yield call(fetch, URL); 
    const userToJson = yield user.json(); 
    yield put(setUser(userToJson)) 
} 

不幸的是,当我点击 “获取用户” 按钮,没有任何反应:

import React, { PropTypes } from 'react'; 
import CSSModules from 'react-css-modules'; 

import styles from './Button.css'; 

const Button = ({ getUser }) => { 
    function handleClick() { 
    getUser 
    console.log('Clicked'); 
    } 

    return (
    <button 
     type='text' 
     styleName='button' 
     onClick={handleClick} 
    >Get User</button> 
) 
} 


Button.propTypes = { 
    getUser: PropTypes.func 
} 

export default CSSModules(Button, styles, { allowMultiple: true }); 

在这里,整个回购: link to repo on GitHub

回答

0

你的问题与传说无关。您的代码缺少以“”和“mapDispatchToProps”之间的形式出现的“胶水”。请注意,在App.js中,您正在使用Button组件,但没有需要触发GET_USER动作的道具。请看看这个redux documentation页面。

+0

这是真的如果我点击获取用户按钮我可以console.log点击动作,但它似乎像getUser actionCreator没有被派遣,我不明白我失踪,因为在使用REDX传奇之前,我只是使用反应,redux,react-redux,一切都很好 – Simon

+0

你提供的回购表明与redux-saga无关的问题。您的代码缺少上面指出的功能。 – MadNat

+0

我明白这是缺少的功能,但我仍然没有得到什么缺少触发'getUser'。你能更具体一些,并尝试解释吗? – Simon