<?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: Garrett R. Morris</title>
    <description>The latest articles on DEV Community by Garrett R. Morris (@r3wt).</description>
    <link>https://dev.to/r3wt</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%2F364382%2F03186a15-9b33-4187-a180-959921cacf6a.jpeg</url>
      <title>DEV Community: Garrett R. Morris</title>
      <link>https://dev.to/r3wt</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/r3wt"/>
    <language>en</language>
    <item>
      <title>Introducing use-models</title>
      <dc:creator>Garrett R. Morris</dc:creator>
      <pubDate>Wed, 15 Apr 2020 17:20:44 +0000</pubDate>
      <link>https://dev.to/r3wt/introducing-use-models-38j7</link>
      <guid>https://dev.to/r3wt/introducing-use-models-38j7</guid>
      <description>&lt;p&gt;Hello all,&lt;/p&gt;

&lt;p&gt;I have published a library for react which i think people might find useful. I think it will make it easy for you to build large forms with validation without writing a ton of boiler plate code for your inputs. check out the demo using below link:&lt;/p&gt;

&lt;p&gt;[&lt;a href="https://r3wt.github.io/use-models/"&gt;https://r3wt.github.io/use-models/&lt;/a&gt;] &lt;/p&gt;

&lt;p&gt;and let me know what you think. If you like the project, anyone is free to contribute ideas, bug reports, and pull requests on github. I am generally open to contributors regardless of skill level and experience. &lt;/p&gt;

&lt;p&gt;Github: &lt;a href="https://github.com/r3wt/use-models"&gt;https://github.com/r3wt/use-models&lt;/a&gt;&lt;br&gt;
NPM: &lt;a href="https://www.npmjs.com/package/use-models"&gt;https://www.npmjs.com/package/use-models&lt;/a&gt;&lt;/p&gt;

</description>
      <category>react</category>
      <category>javascript</category>
    </item>
    <item>
      <title>useEffect missing dependency, need advice</title>
      <dc:creator>Garrett R. Morris</dc:creator>
      <pubDate>Fri, 10 Apr 2020 18:56:06 +0000</pubDate>
      <link>https://dev.to/r3wt/useeffect-missing-dependency-need-advice-4d6b</link>
      <guid>https://dev.to/r3wt/useeffect-missing-dependency-need-advice-4d6b</guid>
      <description>&lt;p&gt;I am developing a react plugin called &lt;a href="https://github.com/r3wt/use-models"&gt;use-models&lt;/a&gt;, and i have ran into an issue and i'm having trouble determining what is the proper technique for dealing with the issue.&lt;/p&gt;

&lt;p&gt;So, basically my plugin is for &lt;code&gt;hooks&lt;/code&gt; and it allows you to define some state object with validation, and use input helpers. if you want to hydrate the state, perhaps from a db call or localstorage, you need to call &lt;code&gt;hydrate()&lt;/code&gt; with an update object.&lt;/p&gt;

&lt;p&gt;So, i wrote a simple function in my plugin:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight jsx"&gt;&lt;code&gt;&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nx"&gt;hydrate&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt; &lt;span class="nx"&gt;_state&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;_errors&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="kc"&gt;false&lt;/span&gt; &lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;hydrate()&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="nx"&gt;setState&lt;/span&gt;&lt;span class="p"&gt;({...&lt;/span&gt;&lt;span class="nx"&gt;state&lt;/span&gt;&lt;span class="p"&gt;,...&lt;/span&gt;&lt;span class="nx"&gt;_state&lt;/span&gt;&lt;span class="p"&gt;});&lt;/span&gt;
    &lt;span class="k"&gt;if&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;_errors&lt;/span&gt;&lt;span class="p"&gt;){&lt;/span&gt;
        &lt;span class="nx"&gt;setErrors&lt;/span&gt;&lt;span class="p"&gt;({...&lt;/span&gt;&lt;span class="nx"&gt;errors&lt;/span&gt;&lt;span class="p"&gt;,...&lt;/span&gt;&lt;span class="nx"&gt;_errors&lt;/span&gt;&lt;span class="p"&gt;});&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;and my intent was for users to use this like so:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight jsx"&gt;&lt;code&gt;&lt;span class="nx"&gt;useEffect&lt;/span&gt;&lt;span class="p"&gt;(()&lt;/span&gt;&lt;span class="o"&gt;=&amp;gt;&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;hydrate&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
        &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Garrett&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="na"&gt;email&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;test@test.com&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="na"&gt;newsletter&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;yes&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;
    &lt;span class="p"&gt;});&lt;/span&gt;
&lt;span class="p"&gt;},[]);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;this works exactly how i intended it, however it leads to the dreaded linter warning: &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;React Hook useEffect has a missing dependency: 'hydrate'&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Hmm, so how to solve this:&lt;/p&gt;

&lt;p&gt;Should i simply change my example to pass in &lt;code&gt;hydrate&lt;/code&gt; as a dependency? this feels wrong to me, as hydrate never changes.&lt;/p&gt;

&lt;p&gt;So i thought to solve it at library level, by modifying hydrate:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight jsx"&gt;&lt;code&gt;&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nx"&gt;hydrate&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt; &lt;span class="nx"&gt;_state&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;_errors&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="kc"&gt;false&lt;/span&gt; &lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;hydrate()&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;useEffect&lt;/span&gt;&lt;span class="p"&gt;(()&lt;/span&gt;&lt;span class="o"&gt;=&amp;gt;&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="nx"&gt;setState&lt;/span&gt;&lt;span class="p"&gt;({...&lt;/span&gt;&lt;span class="nx"&gt;state&lt;/span&gt;&lt;span class="p"&gt;,...&lt;/span&gt;&lt;span class="nx"&gt;_state&lt;/span&gt;&lt;span class="p"&gt;});&lt;/span&gt;
        &lt;span class="k"&gt;if&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;_errors&lt;/span&gt;&lt;span class="p"&gt;){&lt;/span&gt;
            &lt;span class="nx"&gt;setErrors&lt;/span&gt;&lt;span class="p"&gt;({...&lt;/span&gt;&lt;span class="nx"&gt;errors&lt;/span&gt;&lt;span class="p"&gt;,...&lt;/span&gt;&lt;span class="nx"&gt;_errors&lt;/span&gt;&lt;span class="p"&gt;});&lt;/span&gt;
        &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="p"&gt;},[&lt;/span&gt;&lt;span class="nx"&gt;_state&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="nx"&gt;_errors&lt;/span&gt;&lt;span class="p"&gt;]);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;this works to eliminate the warning, but then i realized that users are still going to need to call &lt;code&gt;hydrate()&lt;/code&gt; from within &lt;code&gt;useEffect()&lt;/code&gt; on their components. Now i'm at a loss for what to do. can anyone give advice? if i pass &lt;code&gt;hydrate&lt;/code&gt; as a dependency to &lt;code&gt;useEffect()&lt;/code&gt; then the effect is executed on every re-render!&lt;/p&gt;

</description>
      <category>react</category>
    </item>
  </channel>
</rss>
