React code to build shopping cart The Next CEO of Stack OverflowJquery shopping cart code reviewReact Flux structure for a shopping appShopping cart simulatorShopping Cart with React JSReact Native - Rendering different scenes based on application stateExercise: Build a news page with React & React RouterCreate exact replica of react component with different nameES6 Javascript (React) code that maps and filters JSON dataCustom header with React-Navigation and React-Native-PaperCode improvements for React App
Is it ever safe to open a suspicious HTML file (e.g. email attachment)?
Help understanding this unsettling image of Titan, Epimetheus, and Saturn's rings?
Why am I getting "Static method cannot be referenced from a non static context: String String.valueOf(Object)"?
Why is the US ranked as #45 in Press Freedom ratings, despite its extremely permissive free speech laws?
Spaces in which all closed sets are regular closed
How to get the last not-null value in an ordered column of a huge table?
Do scriptures give a method to recognize a truly self-realized person/jivanmukta?
Help/tips for a first time writer?
Could a dragon use its wings to swim?
how one can write a nice vector parser, something that does pgfvecparseA=B-C; D=E x F;
Is dried pee considered dirt?
What steps are necessary to read a Modern SSD in Medieval Europe?
Aggressive Under-Indexing and no data for missing index
Won the lottery - how do I keep the money?
Can this note be analyzed as a non-chord tone?
What was Carter Burke's job for "the company" in Aliens?
What day is it again?
Reshaping json / reparing json inside shell script (remove trailing comma)
Is fine stranded wire ok for main supply line?
"Eavesdropping" vs "Listen in on"
Why is information "lost" when it got into a black hole?
In the "Harry Potter and the Order of the Phoenix" video game, what potion is used to sabotage Umbridge's speakers?
Can you teleport closer to a creature you are Frightened of?
Why don't programming languages automatically manage the synchronous/asynchronous problem?
React code to build shopping cart
The Next CEO of Stack OverflowJquery shopping cart code reviewReact Flux structure for a shopping appShopping cart simulatorShopping Cart with React JSReact Native - Rendering different scenes based on application stateExercise: Build a news page with React & React RouterCreate exact replica of react component with different nameES6 Javascript (React) code that maps and filters JSON dataCustom header with React-Navigation and React-Native-PaperCode improvements for React App
$begingroup$
I have built a basic shopping cart simulator, all it does is add and remove items between two different basket i.e (aisle vs basket)
While working on the problem i started to think about the approach, would love to hear what people think ?
1. Avoid initializing the state empty state in the constructor, however i had to initialize shoppingCart: []
in componentDidMount
hook to avoid type error. What is the better and clean approach ?
2. Is it good practice to keep the logic simple in handleXXXClicks
, separation of concern one for handling items
and one for shoppingCart
?
3. I feel aisleList
and cartList
bloated and i could have written itemComponent which is avoid duplicate code.
4. Is there any better way to handle the item in setState
? I couldn't think of using prevState
in my scenario.
Use setState
without initializing state
componentDidMount()
// assuming data comes from API fetch
let items = ["banana", "eggs", "bread", "apple"];
this.setState(
items,
shoppingCart: [] // had to set this empty to avoid typeerror
);
handle handleClick
and setState
handleCartClick = event =>
let newList = this.state.shoppingCart.filter(item =>
return item !== event.target.value;
);
this.setState(
items: [...this.state.items, event.target.value],
shoppingCart: [...newList]
);
;
Gist link
Demo link
javascript ecmascript-6 react.js react-native
New contributor
$endgroup$
add a comment |
$begingroup$
I have built a basic shopping cart simulator, all it does is add and remove items between two different basket i.e (aisle vs basket)
While working on the problem i started to think about the approach, would love to hear what people think ?
1. Avoid initializing the state empty state in the constructor, however i had to initialize shoppingCart: []
in componentDidMount
hook to avoid type error. What is the better and clean approach ?
2. Is it good practice to keep the logic simple in handleXXXClicks
, separation of concern one for handling items
and one for shoppingCart
?
3. I feel aisleList
and cartList
bloated and i could have written itemComponent which is avoid duplicate code.
4. Is there any better way to handle the item in setState
? I couldn't think of using prevState
in my scenario.
Use setState
without initializing state
componentDidMount()
// assuming data comes from API fetch
let items = ["banana", "eggs", "bread", "apple"];
this.setState(
items,
shoppingCart: [] // had to set this empty to avoid typeerror
);
handle handleClick
and setState
handleCartClick = event =>
let newList = this.state.shoppingCart.filter(item =>
return item !== event.target.value;
);
this.setState(
items: [...this.state.items, event.target.value],
shoppingCart: [...newList]
);
;
Gist link
Demo link
javascript ecmascript-6 react.js react-native
New contributor
$endgroup$
add a comment |
$begingroup$
I have built a basic shopping cart simulator, all it does is add and remove items between two different basket i.e (aisle vs basket)
While working on the problem i started to think about the approach, would love to hear what people think ?
1. Avoid initializing the state empty state in the constructor, however i had to initialize shoppingCart: []
in componentDidMount
hook to avoid type error. What is the better and clean approach ?
2. Is it good practice to keep the logic simple in handleXXXClicks
, separation of concern one for handling items
and one for shoppingCart
?
3. I feel aisleList
and cartList
bloated and i could have written itemComponent which is avoid duplicate code.
4. Is there any better way to handle the item in setState
? I couldn't think of using prevState
in my scenario.
Use setState
without initializing state
componentDidMount()
// assuming data comes from API fetch
let items = ["banana", "eggs", "bread", "apple"];
this.setState(
items,
shoppingCart: [] // had to set this empty to avoid typeerror
);
handle handleClick
and setState
handleCartClick = event =>
let newList = this.state.shoppingCart.filter(item =>
return item !== event.target.value;
);
this.setState(
items: [...this.state.items, event.target.value],
shoppingCart: [...newList]
);
;
Gist link
Demo link
javascript ecmascript-6 react.js react-native
New contributor
$endgroup$
I have built a basic shopping cart simulator, all it does is add and remove items between two different basket i.e (aisle vs basket)
While working on the problem i started to think about the approach, would love to hear what people think ?
1. Avoid initializing the state empty state in the constructor, however i had to initialize shoppingCart: []
in componentDidMount
hook to avoid type error. What is the better and clean approach ?
2. Is it good practice to keep the logic simple in handleXXXClicks
, separation of concern one for handling items
and one for shoppingCart
?
3. I feel aisleList
and cartList
bloated and i could have written itemComponent which is avoid duplicate code.
4. Is there any better way to handle the item in setState
? I couldn't think of using prevState
in my scenario.
Use setState
without initializing state
componentDidMount()
// assuming data comes from API fetch
let items = ["banana", "eggs", "bread", "apple"];
this.setState(
items,
shoppingCart: [] // had to set this empty to avoid typeerror
);
handle handleClick
and setState
handleCartClick = event =>
let newList = this.state.shoppingCart.filter(item =>
return item !== event.target.value;
);
this.setState(
items: [...this.state.items, event.target.value],
shoppingCart: [...newList]
);
;
Gist link
Demo link
javascript ecmascript-6 react.js react-native
javascript ecmascript-6 react.js react-native
New contributor
New contributor
New contributor
asked 3 mins ago
Mad-DMad-D
1011
1011
New contributor
New contributor
add a comment |
add a comment |
0
active
oldest
votes
StackExchange.ifUsing("editor", function ()
return StackExchange.using("mathjaxEditing", function ()
StackExchange.MarkdownEditor.creationCallbacks.add(function (editor, postfix)
StackExchange.mathjaxEditing.prepareWmdForMathJax(editor, postfix, [["\$", "\$"]]);
);
);
, "mathjax-editing");
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: "196"
;
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: false,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: null,
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
);
);
Mad-D is a new contributor. Be nice, and check out our Code of Conduct.
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
var $window = $(window),
onScroll = function(e)
var $elem = $('.new-login-left'),
docViewTop = $window.scrollTop(),
docViewBottom = docViewTop + $window.height(),
elemTop = $elem.offset().top,
elemBottom = elemTop + $elem.height();
if ((docViewTop elemBottom))
StackExchange.using('gps', function() StackExchange.gps.track('embedded_signup_form.view', location: 'question_page' ); );
$window.unbind('scroll', onScroll);
;
$window.on('scroll', onScroll);
);
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%2fcodereview.stackexchange.com%2fquestions%2f216618%2freact-code-to-build-shopping-cart%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
0
active
oldest
votes
0
active
oldest
votes
active
oldest
votes
active
oldest
votes
Mad-D is a new contributor. Be nice, and check out our Code of Conduct.
Mad-D is a new contributor. Be nice, and check out our Code of Conduct.
Mad-D is a new contributor. Be nice, and check out our Code of Conduct.
Mad-D is a new contributor. Be nice, and check out our Code of Conduct.
Thanks for contributing an answer to Code Review Stack Exchange!
- 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.
Use MathJax to format equations. MathJax reference.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
var $window = $(window),
onScroll = function(e)
var $elem = $('.new-login-left'),
docViewTop = $window.scrollTop(),
docViewBottom = docViewTop + $window.height(),
elemTop = $elem.offset().top,
elemBottom = elemTop + $elem.height();
if ((docViewTop elemBottom))
StackExchange.using('gps', function() StackExchange.gps.track('embedded_signup_form.view', location: 'question_page' ); );
$window.unbind('scroll', onScroll);
;
$window.on('scroll', onScroll);
);
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%2fcodereview.stackexchange.com%2fquestions%2f216618%2freact-code-to-build-shopping-cart%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');
var $window = $(window),
onScroll = function(e)
var $elem = $('.new-login-left'),
docViewTop = $window.scrollTop(),
docViewBottom = docViewTop + $window.height(),
elemTop = $elem.offset().top,
elemBottom = elemTop + $elem.height();
if ((docViewTop elemBottom))
StackExchange.using('gps', function() StackExchange.gps.track('embedded_signup_form.view', location: 'question_page' ); );
$window.unbind('scroll', onScroll);
;
$window.on('scroll', onScroll);
);
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');
var $window = $(window),
onScroll = function(e)
var $elem = $('.new-login-left'),
docViewTop = $window.scrollTop(),
docViewBottom = docViewTop + $window.height(),
elemTop = $elem.offset().top,
elemBottom = elemTop + $elem.height();
if ((docViewTop elemBottom))
StackExchange.using('gps', function() StackExchange.gps.track('embedded_signup_form.view', location: 'question_page' ); );
$window.unbind('scroll', onScroll);
;
$window.on('scroll', onScroll);
);
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');
var $window = $(window),
onScroll = function(e)
var $elem = $('.new-login-left'),
docViewTop = $window.scrollTop(),
docViewBottom = docViewTop + $window.height(),
elemTop = $elem.offset().top,
elemBottom = elemTop + $elem.height();
if ((docViewTop elemBottom))
StackExchange.using('gps', function() StackExchange.gps.track('embedded_signup_form.view', location: 'question_page' ); );
$window.unbind('scroll', onScroll);
;
$window.on('scroll', onScroll);
);
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