title: Why immer.js doesn't allow setting dynamic properties on draft?
body: <p><div class="snippet" data-lang="js" data-hide="false" data-console="true" data-babel="false">
  <div class="snippet-code">
  <pre class="snippet-code-js lang-js prettyprint-override"><code>//I want my action to dispatch payload like
  // {type:'update',payload:{'current.contact.mobile':'XXXXXXXXX'}}
  //In reducer dynamically select the segment of state update needs to be applied to 
  //Below code doesn't work as expected though, draft always remains at same level
  draft = dA.key.split('.').reduce((draft, k) =&gt; {
    return draft[k]
  }, draft);
  
  //Or an ideal syntax may look like below line
  draft['current.contact.mobile'] = dA.value;
  
  
  //Code that works
  draft['current']['contact']['mobile'] = dA.value;</code></pre>
  </div>
  </div>
  
  I want my action to dispatch payload like
  {type:'update',payload:{'current.contact.mobile':'XXXXXXXXX'}}
  And in reducer dynamically select the segment of state that needs to be updated. 
  Is there something fundamentally wrong in doing this, I believe this could make life easier. Is there something that can done to achieve this  ?</p>