mirror of
https://github.com/harttle/liquidjs.git
synced 2026-09-15 04:10:40 -07:00
docs: add demo for React hooks and context (#150)
This commit is contained in:
@@ -0,0 +1,41 @@
|
||||
/*
|
||||
* function Component with Hooks: Modify ./index.js to apply this file
|
||||
*/
|
||||
import React, { useState, useLayoutEffect } from 'react';
|
||||
import './App.css';
|
||||
import logo from './logo.svg';
|
||||
import tplsrc from './views/showing-click-times.liquid';
|
||||
import Parser from 'html-react-parser';
|
||||
import { engine } from './engine';
|
||||
import { Context } from './Context';
|
||||
import { ClickButton } from './ClickButton';
|
||||
|
||||
const fetchTpl = engine.getTemplate(tplsrc.toString())
|
||||
|
||||
export function App() {
|
||||
const [state, setState] = useState({
|
||||
logo: logo,
|
||||
name: 'alice',
|
||||
clickCount: 0,
|
||||
html: ''
|
||||
});
|
||||
|
||||
useLayoutEffect(() => {
|
||||
fetchTpl
|
||||
.then(tpl => engine.render(tpl, state))
|
||||
.then(html => setState({...state, html}))
|
||||
}, [state.clickCount])
|
||||
|
||||
return (
|
||||
<div className="App">
|
||||
{Parser(`${state.html}`)}
|
||||
<Context.Provider
|
||||
value={{
|
||||
count: () => setState({...state, clickCount: state.clickCount + 1})
|
||||
}}
|
||||
>
|
||||
<ClickButton/>
|
||||
</Context.Provider>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
Reference in New Issue
Block a user