GithubHelp home page GithubHelp logo

Comments (4)

solkimicreb avatar solkimicreb commented on August 20, 2024

Every observable has a $raw property, which points to the underlying non-reactive raw object (the one passed to the observable() function.) You can use this to fine tune observability in two ways.

1. Example: Use $raw in observers

import { observable, observe } from '@nx-js/observer-util'

const person = observable({ age: 20 })
observe(() => console.log(`${person.name}: ${person.$raw.age}`))

// this logs 'Bob: 20'
person.name = 'Bob'

// this won't log anything as the observer uses the non-reactive `$raw` object to access `age`
person.age = 33

2. Example: Use $raw at observable mutations

import { observable, observe } from '@nx-js/observer-util'

const person = observable()
observe(() => console.log(person.name))

// this logs 'Bob'
person.name = 'Bob'

// this won't log anything, mutating the $raw object doesn't trigger observers
person.$raw.name = 'John'

I hope this helps. I plan to improve tests and the docs in the next days. I will boost this section a bit too.

Thanks for the issue 🙂

from observer-util.

Miteshdv avatar Miteshdv commented on August 20, 2024

Well Thanks for the reply , you have done tremendous job I appreciate it . It would be nice if we find a way to pair observer Nd observable neatly for eg like Mobx Observables Nd observer
Thanks

from observer-util.

Miteshdv avatar Miteshdv commented on August 20, 2024

One way might be using observer function like
observer('TARGET PROPERTY TO WATCH',fn())
Thanks

from observer-util.

solkimicreb avatar solkimicreb commented on August 20, 2024

I don't think that I will add that as a feature sorry 🙁 but it can be easily done with normal observers. Take this pseudo code example:

const person = observable({
  name: 'Bob'
})

observe(() => render(person.name))
// this would equal to
// observeProp(person, 'name', () => render(person.name))

You can even build a library that does what you want on top of this library without a lot of code if you feel like doing it 🙂 . I hope this helped, I am closing this now.

from observer-util.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.