Я пытаюсь использовать React-Redux для рендеринга содержимого небольшого JSON.
Я могу получить содержимое с помощью Action: (часть действий. js)
export const getUsersCount = () => {
return function (dispatch, getState) {
connectBack.get('users/count', {
headers: {
'Authorization': getState().current_user.token
}
})
.then( response => {
console.log(response.data)
dispatch(countUsers(response.data))
})
.catch( error => {
console.log('Count ', error)
})
}
}
export const countUsers= (users) => {
return {
type: 'COUNT_USERS',
payload: users
}
}
Консоль будет правильно отображать содержимое response.data (в данном случае: {users: 6}).
Затем я хочу отобразить его на простой странице, но это undefined, мне что-то не хватает ...
import React from 'react'
import { connect } from 'react-redux'
import { getUnfulfilledCount, getUsersCount } from './../../tools/actions'
class Dashboard extends React.Component {
render () {
let statsUsers = this.props.usersCount()
console.log(statsUsers)
return(
<div className="container">
<div className="row">
Dashboard <br/>
Number of registered users: <br/>
{statsUsers}
</div>
</div>
)
}
}
const mapStateToProps = (state) => {
return {
}
}
const mapDispatchToProps = (dispatch) => {
return {
usersCount: () => { dispatch(getUsersCount()) }
}
}
export default connect(mapStateToProps, mapDispatchToProps)(Dashboard)
В дополнение к этому у меня есть редуктор, установленный следующим образом:
import * as actionTypes from './actionTypes'
const initialState = {
users:[]
}
const reducer = (state = initialState, action ) => {
switch (action.type) {
case actionTypes.COUNT_USERS:
return {
...state,
users: action.payload
}
Где actionTypes. js - :
export const COUNT_USERS = 'COUNT_USERS'
Точный рендеринг из консоли: undefined Dashboard. js: 12 {users: 6} действий. js: 315 Очевидно, на дисплее переменная просто пропущена, поскольку statsUsers не определена : "Количество зарегистрированных пользователей:"