в моем приложении реакции я использую redux
с redux-thunk
. Прямо сейчас я получаю props
в моем компоненте, но я не могу получить доступ к последней props
в моемкомпонент methods
, поэтому я использовал componentWillReceiveProps
, чтобы получить последний реквизит, используя nextprops
, тогда я сохраняю nextprops
в моем states
, но проблема здесь в том, что setState
это асинхронный
, поэтому, когда я выбираю определенное состояние в методах класса, получая значение prev state вместо значения nextprops
, которое сохраняется в состоянии.но когда я утешаю тех state
в методах класса с использованием setInterval
получения последнего состояния значения, потому что setState
значение теперь сохранено. ниже мой код
Действие создатель
export function pickup(latlng) {
return function(dispatch) {
dispatch({ type: PICKUP_STATE,payload:latlng });
};
}
Редуктор
import {
PICKUP_STATE,
PICKUP_ADD,
DROPOFF_STATE
} from '../actions/types';
export default (state={},action) => {
const INITIAL_STATE = {
pickup: '',
pickupAdd:''
};
switch(action.type) {
case PICKUP_STATE:
console.log(action.payload)
return {...state,pickup:action.payload};
case PICKUP_ADD:
return{...state,pickupAdd:action.payload};
case DROPOFF_STATE:
return {...state,dropoff:action.payload}
default:
return state;
}
//return state;
}
компонент
import {
connect
} from "react-redux";
import * as actions from "../actions"
class Map extends React.Component {
componentWillReceiveProps(nextprops) {
if (nextprops.pickupProps !== undefined) {
this.setState({
pick: nextprops.pickupProps
}, () => {
console.log(this.state.pick);
});
}
}
isPickEmpty(emptyPickState) {
this.props.pickup(emptyPickState);
// setTimeout(() =>{ console.log('sdkjlfjlksd',this.state.pick)
},3000);
console.log(this.state.pick);
}
}
const mapStateToProps = (state) => {
// console.log(state.BookingData.pickup);
return {
pickupProps:state.BookingData.pickup,
pickupAddProps: state.BookingData.pickupAdd
}
}
export default connect(mapStateToProps,actions)(Map);
Корень приложения файл
import React from "react";
import ReactDOM from "react-dom";
import { Provider } from 'react-redux';
import { createStore, applyMiddleware } from 'redux';
import "normalize.css/normalize.css"
import "./styles/styles.scss";
import { Router, Route, IndexRoute, browserHistory } from 'react-router';
import reduxThunk from 'redux-thunk';
import { composeWithDevTools } from 'redux-devtools-extension';
import AppRouter from './routers/AppRouter';
import reducers from './reducers';
import {AUTH_USER} from "./actions/types";
const middleware = [
reduxThunk,
];
const store = createStore(reducers, composeWithDevTools(
applyMiddleware(...middleware),
// other store enhancers if any
));
const token = localStorage.getItem('token');
if(token){
store.dispatch({type:AUTH_USER});
}
ReactDOM.render(
<Provider store={store}>
<AppRouter />
</Provider>
, document.getElementById('app'));
1 - как я могу получить доступ к новейшим props
в моих методах класса
ИЛИ
2 - как я могу получить доступ к nextprops
setState
значению в моих методах класса
ИЛИ
3- любым лучшим способом , чтобы решитьэта ситуация
пожалуйста, помогите мне выбраться из этой ситуации, я застрял в 3 днях