foxhound87 / mobx-react-form

Reactive MobX Form State Management
https://foxhound87.github.io/mobx-react-form
MIT License
1.09k stars 129 forks source link

Update to nested array items does not make isDirty become true #521

Closed riceyeh closed 4 years ago

riceyeh commented 5 years ago

The following example shows that update to nested array items does not make isDirty become true:

const fields = [
  'bulletin',
  'bulletin.jobs',
  'bulletin.jobs[].jobId',
  'bulletin.jobs[].companyName',
];

const values = {
  bulletin: {
    jobs: [
    {
      jobId: 1,
      companyName: 'Acer'
    },
    {
      jobId: 2,
      companyName: 'Asus'
    }]
  }
};

const $999 = new Form({fields, values}, {name: 'Form 999'})
// debugger
$999.update({
  bulletin: {
    jobs: [{
      jobId: 1,
      companyName: 'Apple'
    }]
  }
})
expect($999.$('bulletin.jobs').size).to.be.equal(1)
expect($999.$('bulletin.jobs.0.jobId').value).to.be.equal(1)
expect($999.$('bulletin.jobs.0.jobId').isDirty).to.be.equal(false)
expect($999.$('bulletin.jobs.0.companyName').value).to.be.equal('Apple')
expect($999.$('bulletin.jobs.0.companyName').isDirty).to.be.equal(true) //** but it is still false
expect($999.$('bulletin.jobs.0').isDirty).to.be.equal(true) //** but it is still false
expect($999.$('bulletin.jobs').isDirty).to.be.equal(true)

})

foxhound87 commented 4 years ago

:tada: This issue has been resolved in version 2.0.6 :tada:

The release is available on:

Your semantic-release bot :package::rocket: