create usage example
This commit is contained in:
parent
c4d5c35950
commit
6fbca8a306
@ -7,6 +7,8 @@ import { SearchBar } from './components/SearchBar'
|
|||||||
import './App.css'
|
import './App.css'
|
||||||
import { LangSelect } from './components/LangSelect'
|
import { LangSelect } from './components/LangSelect'
|
||||||
|
|
||||||
|
import { Counter } from 'components/Counter'
|
||||||
|
|
||||||
export const App = () => {
|
export const App = () => {
|
||||||
const { t } = useTranslation()
|
const { t } = useTranslation()
|
||||||
return (
|
return (
|
||||||
@ -20,6 +22,7 @@ export const App = () => {
|
|||||||
<RsvpReader></RsvpReader>
|
<RsvpReader></RsvpReader>
|
||||||
</main>
|
</main>
|
||||||
<footer>Made by Alfred Melch</footer>
|
<footer>Made by Alfred Melch</footer>
|
||||||
|
<Counter />
|
||||||
</>
|
</>
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
48
src/components/Counter.js
Normal file
48
src/components/Counter.js
Normal file
@ -0,0 +1,48 @@
|
|||||||
|
import React from 'react'
|
||||||
|
import { useCounter, CounterProvider } from './CounterStore'
|
||||||
|
|
||||||
|
export const Counter = () => {
|
||||||
|
return (
|
||||||
|
<span>
|
||||||
|
<CounterProvider>
|
||||||
|
<MyCounter />
|
||||||
|
<Text />
|
||||||
|
<TextSetter />
|
||||||
|
<Logger />
|
||||||
|
</CounterProvider>
|
||||||
|
</span>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
const Logger = () => {
|
||||||
|
const store = useCounter()
|
||||||
|
console.log(store[0])
|
||||||
|
return <></>
|
||||||
|
}
|
||||||
|
|
||||||
|
const MyCounter = () => {
|
||||||
|
const [{ counter }, { increment, decrement }] = useCounter()
|
||||||
|
return (
|
||||||
|
<div>
|
||||||
|
{counter}
|
||||||
|
<button onClick={increment}>+</button>
|
||||||
|
<button onClick={decrement}>-</button>
|
||||||
|
</div>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
const Text = () => {
|
||||||
|
const [{ text }] = useCounter()
|
||||||
|
return <span>{text}</span>
|
||||||
|
}
|
||||||
|
|
||||||
|
const TextSetter = () => {
|
||||||
|
const [{ text }, { setText }] = useCounter()
|
||||||
|
return (
|
||||||
|
<input
|
||||||
|
type="text"
|
||||||
|
value={text}
|
||||||
|
onChange={evt => setText(evt.target.value)}
|
||||||
|
/>
|
||||||
|
)
|
||||||
|
}
|
22
src/components/CounterStore.js
Normal file
22
src/components/CounterStore.js
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
import { createStore } from 'context-store'
|
||||||
|
|
||||||
|
const initialState = {
|
||||||
|
counter: 0,
|
||||||
|
text: 'initial'
|
||||||
|
}
|
||||||
|
|
||||||
|
const thunks = {
|
||||||
|
increment: () => dispatch => dispatch(),
|
||||||
|
decrement: () => dispatch => dispatch(),
|
||||||
|
setText: text => dispatch => dispatch({ text })
|
||||||
|
}
|
||||||
|
|
||||||
|
const reducer = {
|
||||||
|
INCREMENT: state => ({ ...state, counter: state.counter + 1 }),
|
||||||
|
DECREMENT: state => ({ ...state, counter: state.counter - 1 }),
|
||||||
|
SET_TEXT: (state, { text }) => ({ ...state, text })
|
||||||
|
}
|
||||||
|
|
||||||
|
const store = createStore({ reducer, thunks, initialState })
|
||||||
|
export const CounterProvider = store.Provider
|
||||||
|
export const useCounter = store.useStore
|
@ -58,6 +58,7 @@ module.exports = (env, argv) => {
|
|||||||
name: entrypoint => `runtime-${entrypoint.name}`
|
name: entrypoint => `runtime-${entrypoint.name}`
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
resolve: { modules: ['src', 'lib', 'node_modules'] },
|
||||||
plugins: [
|
plugins: [
|
||||||
// creat an index.html
|
// creat an index.html
|
||||||
new HtmlWebpackPlugin(),
|
new HtmlWebpackPlugin(),
|
||||||
|
Loading…
Reference in New Issue
Block a user