This repository was archived by the owner on Dec 29, 2022. It is now read-only.
File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change 1- import React , { useState } from "react" ;
2- import store from "./store/store" ;
3-
4- const { useRex } = store ;
1+ import React from "react" ;
2+ import { useFormFieldStore } from "./store/useFormField" ;
53
64export default function App ( ) {
7- const store = useRex ( ) ;
8- const { todos } = store ;
9-
10- const [ newTask , updateNewTask ] = useState ( "" ) ;
11-
12- const onAddTask = ( ) => {
13- todos . addTask ( newTask ) ;
14- updateNewTask ( "" ) ;
15- } ;
16-
5+ const {
6+ values,
7+ updateName,
8+ updateEmail,
9+ updateAge,
10+ updatePhone
11+ } = useFormFieldStore ( ) ;
1712 return (
1813 < div >
1914 < input
2015 type = "text"
21- value = { newTask }
22- onChange = { event => updateNewTask ( event . target . value ) }
23- placeholder = "New Task"
16+ value = { values . name }
17+ onChange = { e => updateName ( e . target . value ) }
18+ placeholder = "Name"
19+ />
20+ < input
21+ type = "text"
22+ value = { values . email }
23+ onChange = { e => updateEmail ( e . target . value ) }
24+ placeholder = "Email"
25+ />
26+ < input
27+ type = "text"
28+ value = { values . phone || "" }
29+ onChange = { e => updatePhone ( e . target . value ) }
30+ placeholder = "Phone"
31+ />
32+ < input
33+ type = "number"
34+ value = { values . age || "" }
35+ onChange = { e => updateAge ( parseInt ( e . target . value ) ) }
36+ placeholder = "Age"
2437 />
25- < button onClick = { onAddTask } > Submit</ button >
26- < ul >
27- { todos . list . map ( ( item , itemIndex ) => {
28- const onClickCheckbox = ( ) => todos . toggleTask ( itemIndex ) ;
29- return (
30- < li key = { itemIndex } >
31- < input
32- type = "checkbox"
33- onChange = { onClickCheckbox }
34- checked = { item . status }
35- />
36- { item . task }
37- </ li >
38- ) ;
39- } ) }
40- </ ul >
4138 </ div >
4239 ) ;
4340}
Original file line number Diff line number Diff line change 1+ import React from "react" ;
2+ import useRex from "rex-state" ;
3+
4+ const useInput = ( ) => {
5+ const [ state , setState ] = useRex ( { value : "" } ) ;
6+
7+ return {
8+ get value ( ) {
9+ return state . value ;
10+ } ,
11+ updateValue ( value : string ) {
12+ setState ( { value } ) ;
13+ }
14+ } ;
15+ } ;
16+
17+ const SimpleApp = ( ) => {
18+ const { value, updateValue } = useInput ( ) ;
19+
20+ return (
21+ < input
22+ type = "text"
23+ value = { value }
24+ placeholder = "Add Text here..."
25+ onChange = { event => updateValue ( event . target . value ) }
26+ />
27+ ) ;
28+ } ;
29+
30+ export default SimpleApp ;
Original file line number Diff line number Diff line change 11import React from "react" ;
22import ReactDOM from "react-dom" ;
3- import store from "./store/store" ;
43import App from "./App" ;
4+ import { FormFieldProvider } from "./store/useFormField" ;
55
6- const { RexProvider } = store ;
6+ // import SimpleApp from "./SimpleApp";
7+
8+ // ReactDOM.render(<SimpleApp />, document.getElementById("app-root"));
79
810ReactDOM . render (
9- < RexProvider >
11+ < FormFieldProvider >
1012 < App />
11- </ RexProvider > ,
13+ </ FormFieldProvider > ,
1214 document . getElementById ( "app-root" )
1315) ;
Load Diff This file was deleted.
Load Diff This file was deleted.
Original file line number Diff line number Diff line change 1+ import useRex , { createRexStore } from "rex-state" ;
2+
3+ type formFields = {
4+ name : string ;
5+ email : string ;
6+ gender ?: "male" | "female" ;
7+ phone ?: string ;
8+ age ?: number ;
9+ } ;
10+
11+ const useFormField = ( ) => {
12+ const defaultState : formFields = {
13+ name : "" ,
14+ email : ""
15+ } ;
16+
17+ const [ state , setState ] = useRex ( defaultState ) ;
18+
19+ return {
20+ get values ( ) {
21+ return state ;
22+ } ,
23+ updateName ( name : formFields [ "name" ] ) {
24+ setState ( { name } ) ;
25+ } ,
26+ updateEmail ( email : formFields [ "email" ] ) {
27+ setState ( { email } ) ;
28+ } ,
29+ updatePhone ( phone : formFields [ "phone" ] ) {
30+ setState ( { phone } ) ;
31+ } ,
32+ updateGender ( gender : formFields [ "gender" ] ) {
33+ setState ( { gender } ) ;
34+ } ,
35+ updateAge ( age : formFields [ "age" ] ) {
36+ setState ( { age } ) ;
37+ }
38+ } ;
39+ } ;
40+
41+ const { RexProvider, useStore } = createRexStore ( useFormField ) ;
42+
43+ export const FormFieldProvider = RexProvider ;
44+ export const useFormFieldStore = useStore ;
You can’t perform that action at this time.
0 commit comments