我得到了我的输入,它由我的状态的值填充。
<input id="flashVars" name="flashVars" type="text" value={settings.flashVarsValue} disabled={isDisabled} onChange={handleChange} />
设置是我的Redux状态。当我输入一个值时,我必须指定一个onChange
函数。这是我的onChange函数:
handleFlashVarsChange(e) {
let { dispatch } = this.props;
dispatch( changeFlashVarsValue(e.target.value) );
}
它更改输入值的状态值。但当我输入我的输入,它滞后。我不明白为什么每次我改变输入值时都要调用调度。
有没有什么办法可以减少滞后?
我的减速机:
import { ACTIONS } from '../utils/consts';
const initialState = {
...
flashVarsValue: '',
...
};
export function formSettings(state = initialState, action = '') {
switch (action.type) {
...
case ACTIONS.CHANGE_FLASHVARS_VALUE:
return Object.assign({}, state, {
flashVarsValue: action.data
});
default:
return state;
}
}
我的行动:
export function changeFlashVarsValue(data) {
return {
type: ACTIONS.CHANGE_FLASHVARS_VALUE,
data: data
}
}
非常感谢。
我知道这是一个老问题,但如果您想在文本输入上触发onChange,您可能需要取消事件的影响。这个线程在分解它方面做得很好,但我认为这对于op的示例是可行的:
import debounce from 'debounce'
function debounceEventHandler(...args) {
const debounced = debounce(...args)
return function (e) {
e.persist();
return debounced(e);
}
}
const Container = React.createClass({
handleFlashVarsChange(e) {
let { dispatch } = this.props;
//basic redux stuff
this.props.changeFlashVarsValue(e.target.value));
},
render() {
const handleChange = debounceEventHandler(this.handleFlashVarsChange, 15);
return (
<input id="flashVars" onChange={handleChange} />
)
}
}
//...prep and return your redux container
对我来说,答案是使用应该组件更新生命周期钩子。Mike Boutin(大约一年前:)的评论中已经给出了这个答案,但是一个例子可能会对下一个游客有所帮助。
我有一个类似的问题,文本输入丢失,速度慢且跳跃。我在onChange事件中使用setState更新formData。
我发现表单在每按一次键时都会进行完整的重新渲染,因为状态已经发生了变化。为了停止这个,我重写了函数:
shouldComponentUpdate(nextProps, nextState) {
return this.state.formErrors !== nextState.formErrors);
}
我在表单提交时显示一个错误通知面板,其中包含任何新的或更改的验证错误,这是我唯一需要重新呈现的时间。
如果没有子组件,则可以将表单组件的shouldComponentUpdate设置为始终返回false。
我在编辑一个有一百万行的网格时遇到了类似的问题,所以我所做的是更改更新逻辑,在您的例子中,handleChange
仅在事件onBlur
上调用,而不是onChange
。这只会在您失去焦点时触发更新。但我不知道这对你来说是否是一个令人满意的解决方案。
当元素的值通过JavaScript代码更改时,会发生什么事件?例如: 事件在这里没有帮助,因为更改值的不是用户。 在Chrome上测试时,事件不会被激发。也许是因为元素没有失去焦点(它没有获得焦点,所以不能失去焦点)?
给定一个具有受控输入的React组件,我希望能够: 设置来自父级状态的输入值 允许用户将输入更改为任意值 只有在用户提交并且输入通过验证后才更新父级的状态。 我可以用下面的代码片段完成1和2,但是由于值是通过props进入ChildComponent的,所以我不确定如何在不更改父级上myInput的值的情况下更改输入值。
我正在尝试将预订id从HTML传递到模态。在图片中,当我单击屏幕的“Reservation:preview”旁边的“Cancel”时,会出现一个模式,它应该包含Reservation:preview的id号 弹出Modal,但没有保留id号。拜托,怎么了? 我遵循了这个教程:https://www.geeksforgeeks.org/how-to-pass-data-into-a-bootstra
我正在通过一个教程视频制作一个程序,代码是启动、停止或退出汽车。程序的一部分是这样做,如果汽车已经启动或停止,你在程序中告诉他们。我的程序会告诉用户汽车已经启动或停止,但在我告诉它停止两次之后,而不是一次。希望有人能描述一下while循环和if语句中的布尔值之间的关系?
我们的父工作流代码基本上是这样的(来自组织. 我们发现,在大多数情况下,父工作流工作者无法启动子工作流,并抛出上面的超时异常。它疯狂地重试,但从未成功,并一遍又一遍地打印超时异常。然而,有时我们非常幸运,它的工作。有时在活动工作器上它甚至更早就失败了,它抛出同样的异常。我们认为这是由于数据太大(大约5MB ),无法在超时时间内发送(从日志判断,我们猜测设置为2s)。如果我们用少量虚假数据调用< c
这是我制作的简单的cnn架构。我使用的图像是灰度图。 如果我将通道值指定为粗体分类器中指定的1。添加(卷积2d(32,kernel\u size=3,input\u shape=(50,50,1),激活='relu')) Im获取错误为 检查输入时出错:预期conv2d\u 1\u输入具有形状(50,50,1),但获得具有形状(50,50,3)的数组 但是如果我使用过滤器大小为3,我不会得到任何错