当前位置 : 主页 > 网络编程 > PHP >

3个React技巧

来源:互联网 收集:自由互联 发布时间:2023-09-07
在Fragment上使用key值 const pokemons = ['Charizard', 'Mr. Mime', 'Jynx'] pokemons.map(pokemon = ( strongName: /strong span{pokemon}/span / )) 空标签不能加key值,但是可以使用React.Fragment代替 pokemons.map(pokemon = ( Re


在Fragment上使用key值

const pokemons = ['Charizard', 'Mr. Mime', 'Jynx']

pokemons.map(pokemon => (
<>
<strong>Name: </strong>
<span>{pokemon}</span>
</>
))

空标签不能加key值,但是可以使用React.Fragment代替

pokemons.map(pokemon => (
<React.Fragment key={pokemon}>
<strong>Name: </strong>
<span>{pokemon}</span>
</React.Fragment>
))

创建一个变量标签

const Button = ({ as = 'button', ...props }) => React.createElement(as, props)

<Button>A Button</Button> // 渲染为button按钮
<Button as="a">A Link</Button> // 渲染为a标签

其实这个写法不好,我们可以这样,可以将属性作为组件来使用,react中称为render props

const Button = ({ Component = 'button', ...props }) => <Component {...props} />

<Button>A Button</Button> // 渲染为button按钮
<Button Component="a">A Link</Button> // 渲染为a标签

使用useReducer实现useState

如果直接从useReducer返回操作,则其行为与useState几乎相同。

function App() {
const [name, setName] = useReducer((_, value) => value, '请输入');
return (
<div className="App">
<input value={name} onChange={e => setName(e.target.value)} />
</div>
);
}

export default App;

手动重新渲染组件

您是否需要手动重新渲染组件? 例如,您需要重新渲染组件,但是没有任何状态或可以触摸的任何内容。 假设出于某种奇怪的原因,您想在单击按钮时执行此操作。

您可以执行以下操作:

function App() {
const [, rerender] = useState()
function handleRefresh () {
rerender({})
}
return (
<div className="App">
<div>hello</div>
<button onClick={handleRefresh}>按钮</button>
</div>
);
}


export default App;

您使用useState,但实际上并不需要状态本身。 您只需要setState函数来引起重新渲染。


上一篇:Vue3不支持eventBus
下一篇:没有了
网友评论