Bildiğim kadarıyla, eylem oluşturmak için istek yazmam gerekiyor. Bir istek göndermek için hareket halinde bir söz nasıl kullanılır? Verileri harekete geçiriyorum. Daha sonra redüktörde yeni durum yaratılır. Bağlantıda bağlama eylemi ve redüktör. Ama istek için nasıl söz vereceğimi bilmiyorum.Redux'ta AJAX isteği nasıl yapılır
Eylem
import $ from 'jquery';
export const GET_BOOK = 'GET_BOOK';
export default function getBook() {
return {
type: GET_BOOK,
data: $.ajax({
method: "GET",
url: "/api/data",
dataType: "json"
}).success(function(data){
return data;
})
};
}
Redüktör
import {GET_BOOK} from '../actions/books';
const booksReducer = (state = initialState, action) => {
switch (action.type) {
case GET_BOOK:
return state;
default:
return state;
}
};
export default booksReducer;
Konteyner Nasıl ekran veri kapta?
import React, { Component, PropTypes } from 'react';
import { connect } from 'react-redux';
import getBook from '../actions/books';
import Radium from 'radium';
import {Link} from 'react-router';
function mapStateToProps(state) {
return {
books: state.data.books,
};
}
function mapDispatchToProps(dispatch) {
return {
getBooks:() => dispatch(getBook()),
};
}
@Radium
@connect(mapStateToProps, mapDispatchToProps)
class booksPage extends Component {
static propTypes = {
getBooks: PropTypes.func.isRequired,
books: PropTypes.array.isRequired,
};
render() {
const {books} = this.props;
return (
<div>
<Link to={`/authors`}><MUIButton style="flat">All Authors</MUIButton></Link>
<ul>
{books.map((book, index) =>
<li key={index}>
<Link to={`/book/${book.name}`}><MUIButton style="flat"><div class="mui--text-black mui--text-display4">
"{book.name}"</div></MUIButton></Link>
<Link to={`/author/${book.author}`}><MUIButton style="flat"><div class="mui--text-black mui--text-display4">
{book.author}</div></MUIButton></Link>
</li>
)}
</ul>
</div>
);
}
}
export default booksPage;
teşekkürler, ama şimdi ben Uyarı olsun. 45 (programı): 'Bağlan (booksPage)' .warning @ (programı) render metodunu kontrol 45 Uyarı: getDefaultProps yalnızca klasik React.createClass tanımlarında kullanılır. Bunun yerine "defaultProps" adlı bir statik özellik kullanın. –
Eğer duruma 'action.data' azaltmak mü? –
Object.assign ({}, state, { kitaplar: action.data.books, yazarları: action.data.authors }); –