这是我的渲染功能:
render: function() {
return <div className="input-group search-box">
<input
onChange={this.handleTextChange}
type="text"
value={this.state.text}
className="form-control search-item" />
<span className="input-group-btn"></span>
</div>
}
Run Code Online (Sandbox Code Playgroud)
我有这个作为我的事件处理程序:
handleTextChange: function(event) {
console.log(event.target.value);
this.setState({
text: event.target.value
});
}
Run Code Online (Sandbox Code Playgroud)
问题是当我"保存"一个项目,或者console.log打印输出时,最后一个字符丢失了 - 例如,如果我输入"first",我将打印出"firs",并且需要是捕获最后一个角色的另一个关键事件.我已经试过onKeyUp
-这并不让我在任何类型的,我也试着onKeyDown
和onKeyPress
,其输出什么.这里发生了什么,为什么?我怎样才能让最后一个角色出现?
我试图模拟一个keyDown
事件,专门用于输入,keyCode: 13
.我已经尝试了许多不同的方法来做到这一点,但它们都没有奏效.我也看过网上,似乎这个功能要么是错误的,要么在当前版本的Enzyme中不起作用.有没有人知道这个功能是否有效,如果有的话,模拟输入或其他类型的关键事件的正确语法是什么?谢谢!
这就是我目前所拥有的,它不起作用:
const input = wrapper.find('input');
input.simulate('keyDown', {keyCode: 13});
Run Code Online (Sandbox Code Playgroud)
我目前的酶版本是2.4.1
我有一个电子邮件字段,只有在选中复选框时才显示(布尔值为true
).当表单被提交时,如果选中该复选框,我只需要该字段(boolean为true).
这是我到目前为止所尝试的:
const validationSchema = yup.object().shape({
email: yup
.string()
.email()
.label('Email')
.when('showEmail', {
is: true,
then: yup.string().required('Must enter email address'),
}),
})
Run Code Online (Sandbox Code Playgroud)
我尝试过其他几种变体,但是我从Formik和Yup那里得到错误:
Uncaught (in promise) TypeError: Cannot read property 'length' of undefined
at yupToFormErrors (formik.es6.js:6198)
at formik.es6.js:5933
at <anonymous>
yupToFormErrors @ formik.es6.js:6198
我也从Yup那里得到验证错误.我究竟做错了什么?
我试过了:
input.simulate('blur');
Run Code Online (Sandbox Code Playgroud)
和
input.simulate('onBlur');
Run Code Online (Sandbox Code Playgroud)
这些都不起作用.这甚至可以在Enzyme中使用(我使用的是2.4.1版本).
由于某种原因,REPL控制台(工作表的右侧)没有打印出中间值
例如,这就是我所拥有的:
object test {
val obj = new MyObject(1)
obj.value
}
class MyObject(x: Int) {
def value = x
}
Run Code Online (Sandbox Code Playgroud)
在REPL结果中,我只得到以下内容:
defined module test
.
.
.
defined class MyObject
Run Code Online (Sandbox Code Playgroud)
但是,我没有得到任何中间结果,例如我评估时 x.value
我希望有类似的东西:
> MyObject@14254345
> 1
Run Code Online (Sandbox Code Playgroud)
后 x.value
有什么理由不打印出来?
不能为我的生活摆脱这个错误 - 一直在尝试一天无济于事.gem pristine --all
什么也没做,也没有删除和重新安装捆绑.其他人遇到这个,知道该怎么办?我会在外面感谢答案!
完整的错误在这里:
警告:运行
gem pristine --all
以重新生成已安装的gem规范(如果使用bundle -path,则删除然后重新安装bundle)将提高Spring的启动性能.
每次运行Rails或Rails控制台时都会发生这种情况.
是否有一个验证特定长度的yup函数?
我试过.min(5)
和.max(5)
,但我想要的东西,保证数量正好是5个字符(即邮政编码).
我有一个这样的对象数组:
[ {"name": "apple", "id": "apple_0"},
{"name": "dog", "id": "dog_1"},
{"name": "cat", "id": "cat_2"}
]
Run Code Online (Sandbox Code Playgroud)
我想插入另一个也被命名的元素,apple
因为我不想在那里重复,我怎么能用lodash来查看数组中是否有一个具有相同名称的对象?
有没有办法在formik中的单击处理程序中获取字段的值?
你可以setFieldValue
在那里使用,所以我假设(但找不到任何地方)Formik应该有类似的东西来检索值:
<Button onClick={() => getFieldValue('name') === 'Test' ? action1 : action2}
Run Code Online (Sandbox Code Playgroud)
在Formik中执行此操作的正确方法是什么?
在你定义之后this
,使用this.props
和之间有区别props
吗?
constructor(props) {
super(props);
this.state = {
input: this.props.input,
input2: props.input2
};
}
Run Code Online (Sandbox Code Playgroud)
在这种情况下,input
和input2
这里有什么区别?