Я пытаюсь понять, как работает сокращение-сага, реализуя простой пример (кнопка, которая при нажатии выбирает пользователя из 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
Это правда Если я нажму кнопку GET USER, я смогу console.log действие клика, но похоже, что действие getUserCreator не отправлено, и я не понимаю, что мне не хватает, потому что перед тем, как использовать саму самусс, я просто использовал реагировать, сокращать, реагировать-редукция, и все было хорошо – Simon
Предоставленное вами репо указывает проблемы, которые не имеют никакого отношения к регрекс-саге. В вашем коде отсутствуют функции, указанные выше. – MadNat
Я понимаю, что отсутствует функция, но я до сих пор не понимаю, чего не хватает, чтобы вызвать «getUser». Не могли бы вы быть более конкретными и попытаться объяснить? – Simon