Need help with redux-object?
Click the “chat” button below for chat support from the developer who created it, or find similar developers for support.

About the developer

yury-dymov
134 Stars 20 Forks MIT License 110 Commits 8 Opened issues

Description

Builds complex JS object from normalized redux store. Best works with json-api-normalizer

Services available

!
?

Need anything else?

Contributors list

# 194,398
Elixir
elm
json-ap...
Redux
40 commits
# 27,653
PHP
Shell
Redux
accessi...
18 commits
# 671,285
JavaScr...
Redux
3 commits
# 253,562
Ruby
Shell
HTML
activit...
3 commits
# 7,702
JavaScr...
React
Vim
Redux
3 commits
# 38,654
React
nexus
Rust
Postgre...
2 commits
# 497,010
JavaScr...
json-ap...
Redux
2 commits
# 674,317
JavaScr...
Redux
1 commit
# 646,939
JavaScr...
Redux
1 commit
# 217,917
PHP
normali...
jsonapi
Shell
1 commit
# 209,736
Babel
babel-p...
Redux
TypeScr...
1 commit

redux-object

npm version Downloads Build Status Coverage Status

Builds complex JS object from normalized redux store. Best works with json-api-normalizer.

DEMO - https://yury-dymov.github.io/json-api-react-redux-example/

Demo sources and description - https://github.com/yury-dymov/json-api-react-redux-example

API

Library provides

build
function, which takes 4 parameters: redux state part, object type, ID or an array of IDs or null, and options.

If ID is provided in a form of array, multiple objects are fetched. If ID is null, all objects of selected type are fetched.

| Option | Default | Description | |:--------|:---------------:|:-------------| | eager | false | Controls lazy loading for the child relationship objects. By default, lazy loading is enabled. | | ignoreLinks | false | redux-object doesn't support remote objects. This option suppresses the exception thrown in case user accesses a property, which is not loaded to redux store yet. | | includeType | false | Include the record type as a property 'type' on each result. This is particularly useful for identifying the record type returned by a polymorphic relationship. |

import build from 'redux-object';

/* state: { data: { post: { "2620": { attributes: { "text": "hello", "id": 2620 }, relationships: { daQuestion: { id: "295", type: "question" }, liker: [{ id: "1", type: "user" }, { id: "2", type: "user", }, { id: "3", type: "user" } ], comments: [] } } }, question: { "295": { attributes: { text: "hello?" } } }, user: { "1": { attributes: { id: 1, name: "Alice" } }, "2": { attributes: { id: 2, name: "Bob" } }, "3": { attributes: { id: 3, text: "Jenny" } } }, meta: { 'posts/me': { data: { post: '2620' } } } } }; */

const post = build(state.data, 'post', '2620');

console.log(post.id); // -> 2620 console.log(post.text); // -> hello console.log(post.daQuestion); // -> { id: 295, text: "hello?" } console.log(post.liker.length); //-> 3 console.log(post.liker[0]); // -> { id: 1, name: "Alice" }

// Other examples

const post = build(state.data, 'post', '2620', { eager: true }); const post = build(state.data, 'post', '2620', { eager: false, ignoreLinks: true });

Child objects are lazy loaded unless eager option is explicitly provided.

License

MIT (c) Yury Dymov

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.