JSFiddle - React, Tailwind, and code Playground
HTML
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.4.0/knockout-debug.js"></script>
<div id="bindings">
<ul data-bind="foreach: observableThings">
<li data-bind="text: id"></li>
</ul>
</div>
<button data-bind="click: updateValue">Update</button>
<button data-bind="click: forceUpdate">Force Update</button>
JavaScript
var things = [
{ id: 1, thing: false },
{ id: 2, thing: false },
{ id: 3, thing: false },
{ id: 4, thing: false }
]
var viewModel = function() {
var self = this;
self.observableThings = ko.observableArray(things);
self.updateValue = function() {
self.observableThings()[0].id = 5;
self.observableThings.valueHasMutated();
}
self.forceUpdate = function() {
self.observableThings()[0].id = 5;
var origThings = self.observableThings();
self.observableThings(null);
self.observableThings(origThings);
}
}
ko.applyBindings(new viewModel());