Usage
import useGlobal from './data/global'
import { set_ } from './tools'
function App() {
const [glob, _glob] = useGlobal();
set_(_glob, 'user.name', 'new name');
set_(_glob, 'user.avatar.path.prop1', 'new prop');
.......
function
const set_ = (setter, name, value) =>{
//const [glob, setGlob] = useGlobal();
const dom = name.split('.')[0]
const node1 = name.split('.')[1]
const node2 = name.split('.')[2]
const node3 = name.split('.')[3]
if ( node3 )
setter(p =>(
{[dom]: { ...p[dom],
[node1]: { ...p[dom][node1],
[node2]: { ...p[dom][node1][node2],
[node3]: value } }}}
))
else if ( node2 )
setter(p =>(
{[dom]: { ...p[dom],
[node1]: { ...p[dom][node1],
[node2]: value } }}
))
else if ( node1 )
setter(p =>(
{[dom]: { ...p[dom], [node1]: value }}
))
else
setter(p => value)
/*
setter(p =>(
{user: { ...p.user, name: "changed" }}
))
setter(p =>(
{user: { ...p.user,
avatar: { ...p.user.avatar,
path: ...p.user.avatar.path,
prop1: "new src" } }}
))
*/
}