mirror of
https://github.com/BoostIo/Boostnote
synced 2025-12-13 17:56:25 +00:00
37 lines
804 B
JavaScript
37 lines
804 B
JavaScript
function getIn (object, path) {
|
|
let stack = path.split('.')
|
|
while (stack.length > 1) {
|
|
object = object[stack.shift()]
|
|
}
|
|
return object[stack.shift()]
|
|
}
|
|
|
|
function updateIn (object, path, value) {
|
|
let current = object
|
|
let stack = path.split('.')
|
|
while (stack.length > 1) {
|
|
current = current[stack.shift()]
|
|
}
|
|
current[stack.shift()] = value
|
|
return object
|
|
}
|
|
|
|
function setPartialState (component, path, value) {
|
|
component.setState(
|
|
updateIn(component.state, path, value))
|
|
}
|
|
|
|
export default function linkState (path) {
|
|
return {
|
|
value: getIn(this.state, path),
|
|
requestChange: setPartialState.bind(null, this, path)
|
|
}
|
|
}
|
|
|
|
export function linkState2 (el, path) {
|
|
return {
|
|
value: getIn(el.state, path),
|
|
requestChange: setPartialState.bind(null, el, path)
|
|
}
|
|
}
|