2016-11-05 3 views
0

Я пытаюсь понять, как работает сокращение-сага, реализуя простой пример (кнопка, которая при нажатии выбирает пользователя из API, а затем редуктор добавляет этого пользователя в магазин) с реакцией, сокращением и реакцией-редукцией.Как использовать redux-сагу с redux и react-redux

Вот моя сага (с 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

Ваша проблема не имеет отношения к саге. В вашем коде отсутствует «клей» между редуксом и реагировать в форме mapStateToProps и mapDispatchToProps. Обратите внимание, что в App.js вы используете компонент Button без реквизита, который требуется для запуска действия GET_USER. Пожалуйста, взгляните на эту страницу redux documentation.

+0

Это правда Если я нажму кнопку GET USER, я смогу console.log действие клика, но похоже, что действие getUserCreator не отправлено, и я не понимаю, что мне не хватает, потому что перед тем, как использовать саму самусс, я просто использовал реагировать, сокращать, реагировать-редукция, и все было хорошо – Simon

+0

Предоставленное вами репо указывает проблемы, которые не имеют никакого отношения к регрекс-саге. В вашем коде отсутствуют функции, указанные выше. – MadNat

+0

Я понимаю, что отсутствует функция, но я до сих пор не понимаю, чего не хватает, чтобы вызвать «getUser». Не могли бы вы быть более конкретными и попытаться объяснить? – Simon