<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Abbey Bercher</title>
    <description>The latest articles on DEV Community by Abbey Bercher (@abbeybercher).</description>
    <link>https://dev.to/abbeybercher</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F785404%2F62641629-d009-4054-9462-de0ca0c76e3f.jpeg</url>
      <title>DEV Community: Abbey Bercher</title>
      <link>https://dev.to/abbeybercher</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/abbeybercher"/>
    <language>en</language>
    <item>
      <title>Essential VSCode Extensions for Beginners</title>
      <dc:creator>Abbey Bercher</dc:creator>
      <pubDate>Tue, 11 Jan 2022 15:07:16 +0000</pubDate>
      <link>https://dev.to/abbeybercher/essential-vscode-extensions-for-beginners-2ofp</link>
      <guid>https://dev.to/abbeybercher/essential-vscode-extensions-for-beginners-2ofp</guid>
      <description>&lt;p&gt;&lt;strong&gt;Live Server&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--a8SOTY09--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://github.com/ritwickdey/vscode-live-server/raw/master/images/Screenshot/vscode-live-server-animated-demo.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--a8SOTY09--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://github.com/ritwickdey/vscode-live-server/raw/master/images/Screenshot/vscode-live-server-animated-demo.gif" alt="live server example" width="880" height="471"&gt;&lt;/a&gt;&lt;a href="https://marketplace.visualstudio.com/items?itemName=ritwickdey.LiveServer"&gt;Live Server&lt;/a&gt; launches a local development server. It features a live reload so every time you save your code, your browser will automatically reflect the changes.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Prettier&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://marketplace.visualstudio.com/items?itemName=esbenp.prettier-vscode"&gt;Prettier&lt;/a&gt; is a code formatter that forces a consistent style on your code.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Bracket Pair Colorizer&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--zS_A5e6E--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://github.com/CoenraadS/BracketPair/raw/HEAD/images/example.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--zS_A5e6E--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://github.com/CoenraadS/BracketPair/raw/HEAD/images/example.png" alt="bracket pair colorizer example" width="625" height="119"&gt;&lt;/a&gt;Bracket Pair Colorizer gives opening and closing brackets matching colors. It helps visualize which brackets go together. It's particularly helpful when your brackets get a bit overwhelming. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Colorize&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--dUGNKHTE--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://raw.githubusercontent.com/kamikillerto/vscode-colorize/master/assets/demo.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--dUGNKHTE--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://raw.githubusercontent.com/kamikillerto/vscode-colorize/master/assets/demo.gif" alt="colorize extension example" width="880" height="513"&gt;&lt;/a&gt;&lt;a href="https://marketplace.visualstudio.com/items?itemName=kamikillerto.vscode-colorize"&gt;Colorize&lt;/a&gt; instantly visualizes css colors by generating a colored background for them.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Better Comments&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--53HkvR9n--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://github.com/aaron-bond/better-comments/raw/master/images/better-comments.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--53HkvR9n--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://github.com/aaron-bond/better-comments/raw/master/images/better-comments.PNG" alt="better comments example" width="459" height="414"&gt;&lt;/a&gt;&lt;a href="https://marketplace.visualstudio.com/items?itemName=aaron-bond.better-comments"&gt;Better Comments&lt;/a&gt; helps create reader-friendly comments in your code. It lets you categorize your annotations.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>beginners</category>
      <category>tutorial</category>
      <category>programming</category>
    </item>
    <item>
      <title>Top 3 Platforms to Practice Code</title>
      <dc:creator>Abbey Bercher</dc:creator>
      <pubDate>Mon, 10 Jan 2022 14:07:23 +0000</pubDate>
      <link>https://dev.to/abbeybercher/top-3-platforms-to-practice-code-5aa3</link>
      <guid>https://dev.to/abbeybercher/top-3-platforms-to-practice-code-5aa3</guid>
      <description>&lt;p&gt;Part of being a developer is constantly learning and improving our skills. Developing projects is always a safe bet, but sometimes we just want to practice for code interviews or maybe just knock out some challenges that gradually get harder. Luckily for us, theres plenty of platforms out there to help us with that! &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--zU3mzEyW--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/eyz5dv37bbglzcjaldxy.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--zU3mzEyW--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/eyz5dv37bbglzcjaldxy.jpeg" alt="hackerrank logo" width="880" height="221"&gt;&lt;/a&gt; &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;HackerRank&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;HackerRank is great for beginners, job searchers, and anyone in between. It offers tutorials and explanations to aid you on your journey. It's also designed to help developers get noticed by employers - you can get certified in various technical skills, compete in contests, and even participate in their career fair.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--_WnAxiAi--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/nwfigdgnoytsuhozk20i.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--_WnAxiAi--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/nwfigdgnoytsuhozk20i.png" alt="leetcode logo" width="880" height="587"&gt;&lt;/a&gt; &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;LeetCode&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;With support for 14 coding languages and over 2150 questions to practice, LeetCode makes a great option for those wanting to prepare for a coding interview. They even have cases from companies such as Google and Amazon. The community on LeetCode is a key feature, after completing a problem you can check out the discussion section and read through others solutions.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--WAdqRWib--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/1271rpa7sy5gygeuins9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--WAdqRWib--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/1271rpa7sy5gygeuins9.png" alt="codewars logo" width="400" height="301"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Codewars&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Codewars helps to strengthen and master your code skills. This is great for preparing for interviews and sharpening your critical thinking skills. The structure of codewars lets you complete challenges to rise in rank. Upon completion of a challenge, you can view other users solutions and vote on your favorites.&lt;/p&gt;

&lt;p&gt;Overall, all three are amazing options when it comes to practice. Try them out and see which one gets you hooked!&lt;/p&gt;

</description>
      <category>programming</category>
      <category>career</category>
      <category>beginners</category>
    </item>
    <item>
      <title>useState Basic Training</title>
      <dc:creator>Abbey Bercher</dc:creator>
      <pubDate>Sun, 09 Jan 2022 15:34:58 +0000</pubDate>
      <link>https://dev.to/abbeybercher/usestate-basic-training-4oi7</link>
      <guid>https://dev.to/abbeybercher/usestate-basic-training-4oi7</guid>
      <description>&lt;p&gt;During my time learning React, I had to spend some quality time with state. State is dynamic data that we can use in our components. State can be useful when it comes to controlling components. State is different from props as props are read-only and can not be modified, whereas state can be modified.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;In order to use state, we must first useState.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Before we get started, ensure that you have imported the useState hook. This is a special function called a React Hook that will allow us to access React’s internal state inside of our component.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--C2JB8Few--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/7cmdj2y0558r9dae8anm.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--C2JB8Few--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/7cmdj2y0558r9dae8anm.png" alt="code snippet" width="880" height="370"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;useState returns an array with two variables: a reference to the current value and a setter function.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Now, we will use array destructuring to create the two variables that useState returns.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--OifIbVKL--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/4pua2yli9673acbyijlf.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--OifIbVKL--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/4pua2yli9673acbyijlf.png" alt="code snippet" width="880" height="329"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;We can see here that we have a variable, readerConfused, that tells us the current value of our state is true. We then have a setter function, setConfusion, that will allow us to update our state.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;We use state whenever we want our data to change when a user interacts with our app.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Let’s say we want our state to change when a user clicks a button.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--8Tojyy5q--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/775dlml1i4e4pn94reqv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--8Tojyy5q--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/775dlml1i4e4pn94reqv.png" alt="code snippet" width="880" height="366"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Our button has a click event listener that calls on the handleClick function. It also displays text based on if readerConfused is true or false. If readerConfused is true, the user will be prompted to click the button to no longer be confused. If readerConfused is false, the user will be prompted to click the button and be confused again.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Our setter function will cause our component to re-render.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;On click, we use our setter function to set the readerConfused value to whatever the opposite of that value is. For example, if readerConfused is true, !readerConfused is false, thus our setter function updates readerConfused to false. Using our setter function causes our component to re-render, thus updating the text in our button to the appropriate text.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Another example of using state&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Q8KgN7z1--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/wevl0f4yomgrrknut8tl.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Q8KgN7z1--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/wevl0f4yomgrrknut8tl.png" alt="code snippet" width="880" height="525"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Here, our count’s initial value is set to 0. When a user clicks the button, we use our setter function, setCount, to increase our count by 1. This re-renders our button component to the current value of count. We can click on this button as many times as we’d like, and it will continue to increment and re-render our button.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;A few rules and tips for state&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;React will only update state if a new object/array is passed in to setState, so…&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;When adding an item to an array in state, use the spread operator&lt;/li&gt;
&lt;li&gt;When removing an item from an array in state, use filter&lt;/li&gt;
&lt;li&gt;When updating an item in an array, use map&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;setState is asynchronous. If you need to set state based on the current value of state, it is best practice to use callback syntax.&lt;/p&gt;

&lt;p&gt;Only call hooks at the top level. Aka, don’t call hooks inside loops, conditions, or nested functions.&lt;/p&gt;

&lt;p&gt;Only call hooks from React Functions, not regular JS functions.&lt;/p&gt;

</description>
      <category>react</category>
      <category>webdev</category>
      <category>beginners</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>Array Methods — Destructive vs Nondestructive</title>
      <dc:creator>Abbey Bercher</dc:creator>
      <pubDate>Sun, 09 Jan 2022 15:29:05 +0000</pubDate>
      <link>https://dev.to/abbeybercher/array-methods-destructive-vs-nondestructive-4neg</link>
      <guid>https://dev.to/abbeybercher/array-methods-destructive-vs-nondestructive-4neg</guid>
      <description>&lt;p&gt;Working with data is a fundamental aspect of JavaScript. During my first phase at Flatiron School, I found myself using array methods in everything I did. Array methods could be pretty difficult to use, considering there were so many to work with, and they all did different things. There’s many ways we can group these methods, such as arguments and return value.&lt;br&gt;
When working with arrays, we have to be careful and aware of which methods are destructive and which are nondestructive. Destructive methods are methods that return a mutated or altered array, and nondestructive methods return a new array.&lt;br&gt;
Below we can see that after we use .push() on our array, we alter that array. This is destructive.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--19oEy2K---/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/mqwgk8wq4wx5xrqxzbdg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--19oEy2K---/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/mqwgk8wq4wx5xrqxzbdg.png" alt="code snippet" width="880" height="389"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Below you can see that the spread operator can be used to make a copy of and avoid altering the original array. This is nondestructive.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s---Pvxmpep--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/w6x6zvenb1yd233vclux.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s---Pvxmpep--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/w6x6zvenb1yd233vclux.png" alt="code snippet" width="880" height="389"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;When should we use a nondestructive method over a destructive method?&lt;/strong&gt;&lt;br&gt;
We can use a nondestructive method when we want to preserve the data from the original array.&lt;br&gt;
&lt;strong&gt;Which methods are destructive?&lt;/strong&gt;&lt;br&gt;
Destructive methods include .push(), .unshift(), .pop(), .shift(), and .splice()&lt;br&gt;
&lt;strong&gt;Which methods are nondestructive?&lt;/strong&gt;&lt;br&gt;
Nondestructive methods include spread operator […] and .slice()&lt;br&gt;
&lt;strong&gt;Summary&lt;/strong&gt;&lt;br&gt;
Be careful when working with arrays to ensure you don’t mutate data that you want to preserve.&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>webdev</category>
      <category>beginners</category>
      <category>programming</category>
    </item>
  </channel>
</rss>
