2016-11-05 60 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