में AJAX अनुरोध कैसे करें, मुझे पता है कि मुझे कार्रवाई बनाने में अनुरोध लिखना है। अनुरोध जमा करने के लिए कार्रवाई में वादे का उपयोग कैसे करें? मुझे कार्रवाई में डेटा मिल रहा है। फिर नया राज्य reducer में बनाया गया है। कनेक्ट में बाध्य कार्रवाई और reducer। लेकिन मुझे नहीं पता कि अनुरोध के लिए वादे का उपयोग कैसे करें।रेडक्स
कार्रवाई
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;
})
};
}
प्रसारण
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;
कंटेनर कैसे प्रदर्शन डेटा कंटेनर में?
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;
धन्यवाद, लेकिन अब मुझे चेतावनी मिल रही है: असफल प्रोपटाइप: आवश्यक प्रोप 'किताबें' 'booksPage' में निर्दिष्ट नहीं थीं। 'कनेक्ट (बुकपेज)' की रेंडर विधि देखें। चेतावनी @ (प्रोग्राम): 45 (प्रोग्राम): 45 चेतावनी: getDefaultProps केवल क्लासिक React.createClass परिभाषाओं पर उपयोग किया जाता है। इसके बजाय 'defaultProps' नाम की एक स्थिर संपत्ति का उपयोग करें। –
क्या आपने 'action.data' को राज्य में घटा दिया था? –
ऑब्जेक्ट.साइन ({}, राज्य, { पुस्तकें: action.data.books, लेखकों: action.data.authors }); –