Hook and Mobx demo

15 篇文章 1 订阅

一、

import React, {useState, useEffect, useCallback} from 'react'
// import { CloseOutlined } from '@ant-design/icons';
export default function HookFour() {
	const [list, setlist] = useState(['a', 'ab', 'abc', 'b', 'cn'])
	const [oldlist] = useState(['a', 'ab', 'abc', 'b', 'cn'])
	const [text, settext] = useState('')
	const del = useCallback(
		() => {
			settext('')
		},
		[],
	)
	// const icon = (
	// 	<CloseOutlined style={{color: '#000'}}/>
	// )
	useEffect(()=>{
		setlist(oldlist.filter(item => item.includes(text)))
	},[text])
	return (
		<div>
			<input
				type='text'
				value={text}
				onChange={(e)=>{
					settext(e.target.value)
				}}
			/>
			<button onClick={del}>clear</button>
			{
				list.map((item, index) => 
					<li key={index} style={{color: '#fff'}}>{item}</li>
				)
			}
		</div>
	)
}

二、

import React, {useState, useReducer, useCallback, useContext} from 'react'
const GloabalContext = React.createContext()
function reducer(state, action) {
	switch(action.type) {
		case 'add':
			return {
				num: state.num + 1
			}
		default:
			return state
	}
}
function ChildOne() {
	const {state, dispatch} = useContext (GloabalContext)
	return <div style={{color: '#fff'}}>ChildOne-{state.num}</div>
}
function ChildTwo() {
	return <div style={{color: '#fff'}}>ChildTwo</div>
}
export default function HookReducer() {
	// const [state, setstate] = useState(0)
	const [state, dispatch] = useReducer(reducer, {
		num: 1
	})
	const addFn = useCallback(
		() => {
			dispatch({
				type: 'add'
			})
		},
		[]
	)
	return (
		<GloabalContext.Provider value={
			{state, dispatch}
		}>
			123
			<span style={{color: '#fff'}}>{state.num}</span>
			<button onClick={addFn}>add</button>
			<ChildOne />
			<ChildTwo />
		</GloabalContext.Provider>
	)
}

三、

import React, { Component } from 'react'
import {observable, autorun} from 'mobx'

const store = observable.box(true)

autorun(() => {
	console.log(store.get(), 'mobx')
})
export default class MobxA extends Component {
	render() {
		return (
			<div>
				
			</div>
		)
	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值