
Security News
TypeScript is Porting Its Compiler to Go for 10x Faster Builds
TypeScript is porting its compiler to Go, delivering 10x faster builds, lower memory usage, and improved editor performance for a smoother developer experience.
json-react-layouts-data-loader
Advanced tools
[](https://www.npmjs.com/package/json-react-layouts-data-loader)
Component middleware for JSON React layouts which enables data loading via the React SSR Data Loader library.
import { init } from 'json-react-layouts-data-loader'
import { DataLoaderResources, DataProvider } from 'react-ssr-data-loader'
interface MyServices {
// Put the services you want available to components
}
const resources = new DataLoaderResources<MyServices>()
const {
getMiddleware,
createRegisterableComponentWithData,
createRegisterableCompositionWithData,
} = init<MyServices>(resources)
const layout = LayoutRegistration()
.registerComponents(registrar =>
registrar
// Register your components, then register the component data loading middleware
.registerMiddleware(getMiddleware('component')),
)
.registerCompositions(registrar =>
registrar
// Register your compositions, then register the composition data loading middleware
.registerMiddleware(getMiddleware('composition')),
)
// Data-loading component.
export const testComponentWithDataRegistration = createRegisterableComponentWithData(
'test-with-data',
{
// You provide this function to load the data
loadData: props => {},
},
(props, data) => {
if (!data.loaded) {
return <div>Loading...</div>
}
return <TestComponentWithData data={data.result} />
},
)
// Data-loading composition.
const testCompositionWithDataRegistration = createRegisterableCompositionWithData<'main'>()(
'test-with-data', // Composition content areas ^^^^^^
{
// You provide this function to load the data
loadData: props => {},
},
({ main }, props, data) => {
// ^^^^ Receive content areas here.
if (!data.loaded) {
return <div>Loading...</div>
}
return (
<>
<TestComponentWithData data={data.result} />
{main}
</>
)
},
)
If you reference global variables in your data load function the data will not be re-fetched when that variable changes. This is because the data loader assumes if the arguments are the same, the result of the load function will be the same as the current data and do nothing.
You can use the useRuntimeParams
function to merge additional varibles to the data loader props when it re-renders so it can fetch the updated data as expected. For example if you had state stored in redux.
React hooks are supported inside this function.
import { init } from 'json-react-layouts-data-loader'
import { DataLoaderResources, DataProvider } from 'react-ssr-data-loader'
export const testComponentWithDataRegistration = createRegisterableComponentWithData(
'test-with-data',
{
getRuntimeParams: (props, services) => services.store.getState().myAdditionalState
// You provide this function to load the data
loadData: props => {
// Now the global state is visible to the data loader and will make up the cache key so changes to myAdditionalState will cause the data to be re-loaded
props.myAdditionalState
},
},
(props, data) => {
if (!data.loaded) {
return <div>Loading...</div>
}
return <TestComponentWithData data={data.result} />
},
)
FAQs
[](https://www.npmjs.com/package/json-react-layouts-data-loader)
The npm package json-react-layouts-data-loader receives a total of 79 weekly downloads. As such, json-react-layouts-data-loader popularity was classified as not popular.
We found that json-react-layouts-data-loader demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
TypeScript is porting its compiler to Go, delivering 10x faster builds, lower memory usage, and improved editor performance for a smoother developer experience.
Research
Security News
The Socket Research Team has discovered six new malicious npm packages linked to North Korea’s Lazarus Group, designed to steal credentials and deploy backdoors.
Security News
Socket CEO Feross Aboukhadijeh discusses the open web, open source security, and how Socket tackles software supply chain attacks on The Pair Program podcast.