Redux- Not getting state from mapStateToProps
i am new to redux i have created a code and while accessing connect method for state in store, i am getting error and undefined.code is given below.
action:
export const ADD_INGREDIENT = 'ADD_INGREDIENT';
export const REMOVE_INGREDIENT = 'REMOVE_INGREDIENT';
reducer:
import * as actionTypes from './actions';
const initialState={
ingredients: {
salad:0,
meat:0,
cheese:0,
},
totalprice:40
}
const reducer = (state=initialState, action)=>{
switch (action.type) {
case actionTypes.ADD_INGREDIENT:
return {
...state,
ingredients:{
...state.ingredients,
[action.ingredientName] : state.ingredients[action.ingredientName]+1
},
};
case actionTypes.REMOVE_INGREDIENT:
return {
...state,
ingredients:{
...state.ingredients,
[action.ingredientName] : state.ingredients[action.ingredientName]-1,
},
};
default:
return state;
}
};
export default reducer;
my component:
import React, {Component} from 'react';
import Burger from "../../components/burger/burger";
import Aux from '../../hoc/aux';
import classes from './BurgerBuilder.css';
import BuildControls from '../../components/burger/BuildControls/BuildControls';
import Totalprice from '../../components/burger/TotalPrice/TotalPrice';
import * as actionTypes from '../../store/actions';
import { connect } from 'react-redux';
import {store} from '../../App';
const ingredientCost = {
cheese:20,
meat:30,
salad:10,
};
class BurgerBuilder extends Component{
constructor(props){
super(props);
this.state={
initialValue: store.getState().ingredients,
totalPrice:0,
}
}
render(){
const disabledInfo ={
...this.props.ings
}
if(this.props.ings){
return(
<Aux>
<h1 className={classes.Header}>Burger</h1>
<Burger ingredients={this.props.ings}/>
<div>
{this.state.totalPrice !== 0 ?
(<Totalprice
totalAmount={this.state.totalPrice}
/>):(<div></div>)}
<BuildControls
increaseIngredientCount={this.props.newIngredientAdd}
decreaseIngredientCount={this.props.newIngredientRemove}
/></div>
</Aux>
)
}
else{
return(
<Aux>
<h1 className={classes.Header}>Burger</h1>
<Burger
ingredients={this.state.initialValue}/>
<div>
{this.state.totalPrice !== 0 ?
(<Totalprice
totalAmount={this.state.totalPrice}
/>):(<div></div>)}
<BuildControls
increaseIngredientCount={this.props.newIngredientAdd}
decreaseIngredientCount={this.props.newIngredientRemove}
/></div>
</Aux>
)
}
}
}
const mapStateToProps = state =>{
return console.log(state);
}
const mapDispatchToProps = dispatch =>{
return{
newIngredientAdd: (ingName)=>dispatch({type:actionTypes.ADD_INGREDIENT,ingredientName:ingName}),
newIngredientRemove: (ingName)=>dispatch({type:actionTypes.REMOVE_INGREDIENT,ingredientName:ingName})
}
}
export default connect(mapDispatchToProps,mapStateToProps)(BurgerBuilder)
app.js
import React, { Component } from 'react';
import {BrowserRouter} from 'react-router-dom';
import {Provider} from 'react-redux';
import BurgerBuilder from './containers/BurgerBuilder/BurgerBuilder';
import reducer from './store/reducer';
import {createStore, applyMiddleware } from 'redux';
import thunk from 'redux-thunk';
export const store = createStore(reducer, applyMiddleware(thunk))
class App extends Component {
render() {
return (
<Provider store={store}>
<BrowserRouter>
<BurgerBuilder/>
</BrowserRouter>
</Provider>
);
}
}
export default App;
this is the code which i have and i wrapped app.js with provider and while consoling inside the reducer i am able to get the output but while in mycomponent i am not getting the proper output.
Thanks in advance.
reactjs redux react-redux
add a comment |
i am new to redux i have created a code and while accessing connect method for state in store, i am getting error and undefined.code is given below.
action:
export const ADD_INGREDIENT = 'ADD_INGREDIENT';
export const REMOVE_INGREDIENT = 'REMOVE_INGREDIENT';
reducer:
import * as actionTypes from './actions';
const initialState={
ingredients: {
salad:0,
meat:0,
cheese:0,
},
totalprice:40
}
const reducer = (state=initialState, action)=>{
switch (action.type) {
case actionTypes.ADD_INGREDIENT:
return {
...state,
ingredients:{
...state.ingredients,
[action.ingredientName] : state.ingredients[action.ingredientName]+1
},
};
case actionTypes.REMOVE_INGREDIENT:
return {
...state,
ingredients:{
...state.ingredients,
[action.ingredientName] : state.ingredients[action.ingredientName]-1,
},
};
default:
return state;
}
};
export default reducer;
my component:
import React, {Component} from 'react';
import Burger from "../../components/burger/burger";
import Aux from '../../hoc/aux';
import classes from './BurgerBuilder.css';
import BuildControls from '../../components/burger/BuildControls/BuildControls';
import Totalprice from '../../components/burger/TotalPrice/TotalPrice';
import * as actionTypes from '../../store/actions';
import { connect } from 'react-redux';
import {store} from '../../App';
const ingredientCost = {
cheese:20,
meat:30,
salad:10,
};
class BurgerBuilder extends Component{
constructor(props){
super(props);
this.state={
initialValue: store.getState().ingredients,
totalPrice:0,
}
}
render(){
const disabledInfo ={
...this.props.ings
}
if(this.props.ings){
return(
<Aux>
<h1 className={classes.Header}>Burger</h1>
<Burger ingredients={this.props.ings}/>
<div>
{this.state.totalPrice !== 0 ?
(<Totalprice
totalAmount={this.state.totalPrice}
/>):(<div></div>)}
<BuildControls
increaseIngredientCount={this.props.newIngredientAdd}
decreaseIngredientCount={this.props.newIngredientRemove}
/></div>
</Aux>
)
}
else{
return(
<Aux>
<h1 className={classes.Header}>Burger</h1>
<Burger
ingredients={this.state.initialValue}/>
<div>
{this.state.totalPrice !== 0 ?
(<Totalprice
totalAmount={this.state.totalPrice}
/>):(<div></div>)}
<BuildControls
increaseIngredientCount={this.props.newIngredientAdd}
decreaseIngredientCount={this.props.newIngredientRemove}
/></div>
</Aux>
)
}
}
}
const mapStateToProps = state =>{
return console.log(state);
}
const mapDispatchToProps = dispatch =>{
return{
newIngredientAdd: (ingName)=>dispatch({type:actionTypes.ADD_INGREDIENT,ingredientName:ingName}),
newIngredientRemove: (ingName)=>dispatch({type:actionTypes.REMOVE_INGREDIENT,ingredientName:ingName})
}
}
export default connect(mapDispatchToProps,mapStateToProps)(BurgerBuilder)
app.js
import React, { Component } from 'react';
import {BrowserRouter} from 'react-router-dom';
import {Provider} from 'react-redux';
import BurgerBuilder from './containers/BurgerBuilder/BurgerBuilder';
import reducer from './store/reducer';
import {createStore, applyMiddleware } from 'redux';
import thunk from 'redux-thunk';
export const store = createStore(reducer, applyMiddleware(thunk))
class App extends Component {
render() {
return (
<Provider store={store}>
<BrowserRouter>
<BurgerBuilder/>
</BrowserRouter>
</Provider>
);
}
}
export default App;
this is the code which i have and i wrapped app.js with provider and while consoling inside the reducer i am able to get the output but while in mycomponent i am not getting the proper output.
Thanks in advance.
reactjs redux react-redux
what error are you getting? can you share error details/stack trace?
– Syed Osama Maruf
Nov 19 '18 at 9:05
while consoling state i am getting like this
– rnr
Nov 19 '18 at 9:07
ƒ (action) { if (typeof action === 'function') { return action(dispatch, getState, extraArgument); } return next(action); }
– rnr
Nov 19 '18 at 9:07
can you create a working example? or share minimum code to reproduce this issue? you can use codesandbox.io/s/new to create a working example...
– Syed Osama Maruf
Nov 19 '18 at 9:10
add a comment |
i am new to redux i have created a code and while accessing connect method for state in store, i am getting error and undefined.code is given below.
action:
export const ADD_INGREDIENT = 'ADD_INGREDIENT';
export const REMOVE_INGREDIENT = 'REMOVE_INGREDIENT';
reducer:
import * as actionTypes from './actions';
const initialState={
ingredients: {
salad:0,
meat:0,
cheese:0,
},
totalprice:40
}
const reducer = (state=initialState, action)=>{
switch (action.type) {
case actionTypes.ADD_INGREDIENT:
return {
...state,
ingredients:{
...state.ingredients,
[action.ingredientName] : state.ingredients[action.ingredientName]+1
},
};
case actionTypes.REMOVE_INGREDIENT:
return {
...state,
ingredients:{
...state.ingredients,
[action.ingredientName] : state.ingredients[action.ingredientName]-1,
},
};
default:
return state;
}
};
export default reducer;
my component:
import React, {Component} from 'react';
import Burger from "../../components/burger/burger";
import Aux from '../../hoc/aux';
import classes from './BurgerBuilder.css';
import BuildControls from '../../components/burger/BuildControls/BuildControls';
import Totalprice from '../../components/burger/TotalPrice/TotalPrice';
import * as actionTypes from '../../store/actions';
import { connect } from 'react-redux';
import {store} from '../../App';
const ingredientCost = {
cheese:20,
meat:30,
salad:10,
};
class BurgerBuilder extends Component{
constructor(props){
super(props);
this.state={
initialValue: store.getState().ingredients,
totalPrice:0,
}
}
render(){
const disabledInfo ={
...this.props.ings
}
if(this.props.ings){
return(
<Aux>
<h1 className={classes.Header}>Burger</h1>
<Burger ingredients={this.props.ings}/>
<div>
{this.state.totalPrice !== 0 ?
(<Totalprice
totalAmount={this.state.totalPrice}
/>):(<div></div>)}
<BuildControls
increaseIngredientCount={this.props.newIngredientAdd}
decreaseIngredientCount={this.props.newIngredientRemove}
/></div>
</Aux>
)
}
else{
return(
<Aux>
<h1 className={classes.Header}>Burger</h1>
<Burger
ingredients={this.state.initialValue}/>
<div>
{this.state.totalPrice !== 0 ?
(<Totalprice
totalAmount={this.state.totalPrice}
/>):(<div></div>)}
<BuildControls
increaseIngredientCount={this.props.newIngredientAdd}
decreaseIngredientCount={this.props.newIngredientRemove}
/></div>
</Aux>
)
}
}
}
const mapStateToProps = state =>{
return console.log(state);
}
const mapDispatchToProps = dispatch =>{
return{
newIngredientAdd: (ingName)=>dispatch({type:actionTypes.ADD_INGREDIENT,ingredientName:ingName}),
newIngredientRemove: (ingName)=>dispatch({type:actionTypes.REMOVE_INGREDIENT,ingredientName:ingName})
}
}
export default connect(mapDispatchToProps,mapStateToProps)(BurgerBuilder)
app.js
import React, { Component } from 'react';
import {BrowserRouter} from 'react-router-dom';
import {Provider} from 'react-redux';
import BurgerBuilder from './containers/BurgerBuilder/BurgerBuilder';
import reducer from './store/reducer';
import {createStore, applyMiddleware } from 'redux';
import thunk from 'redux-thunk';
export const store = createStore(reducer, applyMiddleware(thunk))
class App extends Component {
render() {
return (
<Provider store={store}>
<BrowserRouter>
<BurgerBuilder/>
</BrowserRouter>
</Provider>
);
}
}
export default App;
this is the code which i have and i wrapped app.js with provider and while consoling inside the reducer i am able to get the output but while in mycomponent i am not getting the proper output.
Thanks in advance.
reactjs redux react-redux
i am new to redux i have created a code and while accessing connect method for state in store, i am getting error and undefined.code is given below.
action:
export const ADD_INGREDIENT = 'ADD_INGREDIENT';
export const REMOVE_INGREDIENT = 'REMOVE_INGREDIENT';
reducer:
import * as actionTypes from './actions';
const initialState={
ingredients: {
salad:0,
meat:0,
cheese:0,
},
totalprice:40
}
const reducer = (state=initialState, action)=>{
switch (action.type) {
case actionTypes.ADD_INGREDIENT:
return {
...state,
ingredients:{
...state.ingredients,
[action.ingredientName] : state.ingredients[action.ingredientName]+1
},
};
case actionTypes.REMOVE_INGREDIENT:
return {
...state,
ingredients:{
...state.ingredients,
[action.ingredientName] : state.ingredients[action.ingredientName]-1,
},
};
default:
return state;
}
};
export default reducer;
my component:
import React, {Component} from 'react';
import Burger from "../../components/burger/burger";
import Aux from '../../hoc/aux';
import classes from './BurgerBuilder.css';
import BuildControls from '../../components/burger/BuildControls/BuildControls';
import Totalprice from '../../components/burger/TotalPrice/TotalPrice';
import * as actionTypes from '../../store/actions';
import { connect } from 'react-redux';
import {store} from '../../App';
const ingredientCost = {
cheese:20,
meat:30,
salad:10,
};
class BurgerBuilder extends Component{
constructor(props){
super(props);
this.state={
initialValue: store.getState().ingredients,
totalPrice:0,
}
}
render(){
const disabledInfo ={
...this.props.ings
}
if(this.props.ings){
return(
<Aux>
<h1 className={classes.Header}>Burger</h1>
<Burger ingredients={this.props.ings}/>
<div>
{this.state.totalPrice !== 0 ?
(<Totalprice
totalAmount={this.state.totalPrice}
/>):(<div></div>)}
<BuildControls
increaseIngredientCount={this.props.newIngredientAdd}
decreaseIngredientCount={this.props.newIngredientRemove}
/></div>
</Aux>
)
}
else{
return(
<Aux>
<h1 className={classes.Header}>Burger</h1>
<Burger
ingredients={this.state.initialValue}/>
<div>
{this.state.totalPrice !== 0 ?
(<Totalprice
totalAmount={this.state.totalPrice}
/>):(<div></div>)}
<BuildControls
increaseIngredientCount={this.props.newIngredientAdd}
decreaseIngredientCount={this.props.newIngredientRemove}
/></div>
</Aux>
)
}
}
}
const mapStateToProps = state =>{
return console.log(state);
}
const mapDispatchToProps = dispatch =>{
return{
newIngredientAdd: (ingName)=>dispatch({type:actionTypes.ADD_INGREDIENT,ingredientName:ingName}),
newIngredientRemove: (ingName)=>dispatch({type:actionTypes.REMOVE_INGREDIENT,ingredientName:ingName})
}
}
export default connect(mapDispatchToProps,mapStateToProps)(BurgerBuilder)
app.js
import React, { Component } from 'react';
import {BrowserRouter} from 'react-router-dom';
import {Provider} from 'react-redux';
import BurgerBuilder from './containers/BurgerBuilder/BurgerBuilder';
import reducer from './store/reducer';
import {createStore, applyMiddleware } from 'redux';
import thunk from 'redux-thunk';
export const store = createStore(reducer, applyMiddleware(thunk))
class App extends Component {
render() {
return (
<Provider store={store}>
<BrowserRouter>
<BurgerBuilder/>
</BrowserRouter>
</Provider>
);
}
}
export default App;
this is the code which i have and i wrapped app.js with provider and while consoling inside the reducer i am able to get the output but while in mycomponent i am not getting the proper output.
Thanks in advance.
reactjs redux react-redux
reactjs redux react-redux
asked Nov 19 '18 at 8:52
rnrrnr
318
318
what error are you getting? can you share error details/stack trace?
– Syed Osama Maruf
Nov 19 '18 at 9:05
while consoling state i am getting like this
– rnr
Nov 19 '18 at 9:07
ƒ (action) { if (typeof action === 'function') { return action(dispatch, getState, extraArgument); } return next(action); }
– rnr
Nov 19 '18 at 9:07
can you create a working example? or share minimum code to reproduce this issue? you can use codesandbox.io/s/new to create a working example...
– Syed Osama Maruf
Nov 19 '18 at 9:10
add a comment |
what error are you getting? can you share error details/stack trace?
– Syed Osama Maruf
Nov 19 '18 at 9:05
while consoling state i am getting like this
– rnr
Nov 19 '18 at 9:07
ƒ (action) { if (typeof action === 'function') { return action(dispatch, getState, extraArgument); } return next(action); }
– rnr
Nov 19 '18 at 9:07
can you create a working example? or share minimum code to reproduce this issue? you can use codesandbox.io/s/new to create a working example...
– Syed Osama Maruf
Nov 19 '18 at 9:10
what error are you getting? can you share error details/stack trace?
– Syed Osama Maruf
Nov 19 '18 at 9:05
what error are you getting? can you share error details/stack trace?
– Syed Osama Maruf
Nov 19 '18 at 9:05
while consoling state i am getting like this
– rnr
Nov 19 '18 at 9:07
while consoling state i am getting like this
– rnr
Nov 19 '18 at 9:07
ƒ (action) { if (typeof action === 'function') { return action(dispatch, getState, extraArgument); } return next(action); }
– rnr
Nov 19 '18 at 9:07
ƒ (action) { if (typeof action === 'function') { return action(dispatch, getState, extraArgument); } return next(action); }
– rnr
Nov 19 '18 at 9:07
can you create a working example? or share minimum code to reproduce this issue? you can use codesandbox.io/s/new to create a working example...
– Syed Osama Maruf
Nov 19 '18 at 9:10
can you create a working example? or share minimum code to reproduce this issue? you can use codesandbox.io/s/new to create a working example...
– Syed Osama Maruf
Nov 19 '18 at 9:10
add a comment |
1 Answer
1
active
oldest
votes
Your problem is in this line:
export default connect(mapDispatchToProps,mapStateToProps)(BurgerBuilder)
You have reversed the order of the functions that you are passing in connect
, That's why your console.log
outputs the dispatch function.
Try like that:
export default connect(mapStateToProps, mapDispatchToProps)(BurgerBuilder)
add a comment |
Your Answer
StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53371130%2fredux-not-getting-state-from-mapstatetoprops%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
Your problem is in this line:
export default connect(mapDispatchToProps,mapStateToProps)(BurgerBuilder)
You have reversed the order of the functions that you are passing in connect
, That's why your console.log
outputs the dispatch function.
Try like that:
export default connect(mapStateToProps, mapDispatchToProps)(BurgerBuilder)
add a comment |
Your problem is in this line:
export default connect(mapDispatchToProps,mapStateToProps)(BurgerBuilder)
You have reversed the order of the functions that you are passing in connect
, That's why your console.log
outputs the dispatch function.
Try like that:
export default connect(mapStateToProps, mapDispatchToProps)(BurgerBuilder)
add a comment |
Your problem is in this line:
export default connect(mapDispatchToProps,mapStateToProps)(BurgerBuilder)
You have reversed the order of the functions that you are passing in connect
, That's why your console.log
outputs the dispatch function.
Try like that:
export default connect(mapStateToProps, mapDispatchToProps)(BurgerBuilder)
Your problem is in this line:
export default connect(mapDispatchToProps,mapStateToProps)(BurgerBuilder)
You have reversed the order of the functions that you are passing in connect
, That's why your console.log
outputs the dispatch function.
Try like that:
export default connect(mapStateToProps, mapDispatchToProps)(BurgerBuilder)
answered Nov 19 '18 at 9:25
StundjiStundji
442212
442212
add a comment |
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53371130%2fredux-not-getting-state-from-mapstatetoprops%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
what error are you getting? can you share error details/stack trace?
– Syed Osama Maruf
Nov 19 '18 at 9:05
while consoling state i am getting like this
– rnr
Nov 19 '18 at 9:07
ƒ (action) { if (typeof action === 'function') { return action(dispatch, getState, extraArgument); } return next(action); }
– rnr
Nov 19 '18 at 9:07
can you create a working example? or share minimum code to reproduce this issue? you can use codesandbox.io/s/new to create a working example...
– Syed Osama Maruf
Nov 19 '18 at 9:10