我在一个表单上有一个TextField输入,问题是当我在它上键入时,刚刚键入的值的显示/呈现有一种延迟,我想防止这种延迟。
代码:
export const Contact = (props) => {
const [formInput, setFormInput] = useState({input: 'name', label: 'Type name'});
¿ const [inputsValue, setInputsValue] = useState({name: '', email: '', message: ''});
const handleClick = () => {
switch (formInput.input) {
case 'name':
setFormInput({ input: 'email', label: 'type email' });
break;
case 'email':
setFormInput({ input: 'message', label: 'type message' });
break;
case 'message':
setFormInput({ input: 'name', label: 'type name' });
handleSubmission();
break;
default:
break;
}
}
const handleChange = event => {
setInputsValue({
...inputsValue,
[event.target.name]: event.target.value
});
}
const handleSubmission = event => {
console.log('SUBMITTED CONTACT FORM')
}
return (
<form>
<Grid container>
<Grid item xs={12} sm={10}>
<BouncyText />
</Grid>
</Grid>
<Grid container spacing={2}>
<Grid item xs={12} id="contactFomrField">
<TextField
fullWidth
id={formInput.input}
label={formInput.label}
name={formInput.input}
value={inputsValue[formInput.input]}
onChange={handleChange}
/>
</Grid>
</Grid>
<Grid
container
justify="center"
alignItems="center"
>
<Button
onClick={handleClick}
variant="outlined"
color="primary"
>
{ formInput.input !== 'message' ? 'Next' : 'Send :)'}
</Button>
</form>
)
}
handleClick()
是传递给子组件的回调(在组件中声明),因此应该包装为usecallback()
。否则,该回调函数在rerender之后被重新声明,因此它的引用是不同的,使子组件协调。
https://reactjs.org/docs/hooks-reference.html#usecallback
我从这里修改了以下组件定义,如下所示。但是,与示例不同的是,每次在组件上移动鼠标时,组件都会重新呈现。 重新渲染非常引人注目: 有人知道为什么会这样吗?
我试图建立一个连接4的游戏,它有一个由7列组件组成的板组件,所有包含6个空间组件。每个列的上方都有一个拖放按钮,该按钮将用于将该件拖放到列中。为了在“红色”和“黑色”玩家之间交替,我创建了一个状态“redorblue”,它返回一个布尔值。 简而言之,当单击Drop按钮时,我希望切换“redorblue”的值,以跟踪轮到谁了。我已经将onClick函数设置为setState({redorblue:!
当我们点击“添加”链接时,我试图呈现需要组件。下面是主要组件的代码: 下面是以防万一的需求组件: 我在第一次单击add链接时实现了我试图实现的目标,即在第一次单击add链接时,need组件没有任何条件地被呈现,当我单击“add”时,need组件再次被呈现,但当我第二次单击“add”链接时,我没有看到任何变化。为什么会这样,我希望在每次单击“Add”链接时呈现Need组件。
对于在其生命周期的某个点隐藏的组件,呈现它的最佳方式是什么?1)渲染组件,但不显示它(显示:无)。2)只在需要时渲染组件。什么对性能更好?如果组件的道具和状态稍后更新,是否最好让组件存在,但隐藏在虚拟DOM中? 或者这个:
但是当我从ComponentOne切换到ComponentTwo,然后回到ComponentOne时,它被重新构建,我失去了在ComponentOne中已经做过的一切 是否有一种方法,当创建的组件没有呈现时,它不会丢失其所有状态?
我正在构建一个PhotoViewer,当用户按左键或右键时,它可以更改照片。我正在使用React、Redux、React router和React router Redux。当用户按下左键或右键时,我会做两件事,使用并发送一个操作来更新当前查看的照片,。我订阅状态更改以进行调试。 上面的每一行都会触发一个新的状态更改。因为我更新了,所以发送操作会更新存储,而更新url会更新存储,因为react r