我有一个 React hooks 功能组件,我想用 Jest/Enzyme 测试它。我想根据 useState 值测试其第三级渲染行为。我似乎无法在网上找到任何示例。没有“点击”来模拟 - 没有 API 调用模拟,因为最后,我仍然需要根据 useState 值进行测试。过去,使用类组件,我可以设置状态。有了新的钩子,我就不能了。那么,基本上 - 如何在模拟的 SubmitForm 函数中模拟异步等待,以便渲染行为正常?
这是我的组件:
import React, { useState } from 'react';
import { Redirect } from 'react-router-dom';
import Form from 'core/Form';
export const Parent = ({submitForm}) => {
const [formValues, setFormValues] = useState({});
const [redirect, setRedirect] = useState(false);
const handleChange = name => evt => {
setFormValues({ ...formValues, [name]: evt.target.value });
};
const onSubmit = async () => {
try {
const res = await …Run Code Online (Sandbox Code Playgroud) 如何在 React Native Paper 中更改 TextInput 的文本颜色而不用在 PaperProvider 中换行?
目前这有效:
const theme = {
...DefaultTheme,
colors: {
...DefaultTheme.colors,
text: "orange",
}
};
<PaperProvider theme={theme}>
<TargetComponent />
</PaperProvider>
Run Code Online (Sandbox Code Playgroud)
但是我想通过从父组件传递的道具来控制文本颜色。奇怪的是,传球backgroundColor有效但color无效。
去除PaperProvider包装也无济于事。
这是 TargetComponent 中的相关代码:
return (
<View style={styles.container}>
<TextInput
type="outlined"
style={this.props.style}
onChangeText={this.props.onChange}
label={this.props.label}
value={this.props.value || "Replace this text"}
placeholder={this.props.placeholder}
/>
</View>
)
Run Code Online (Sandbox Code Playgroud)
this.props.style 是:
{
color: "orange", // This does not work
backgroundColor: "transparent" // This works
},
Run Code Online (Sandbox Code Playgroud) 如何通知(运行预定义的函数)对已注册数组的任何更改(或至少添加或删除元素)?我尝试过使用原型.我不想因为没有提供我自己的一些代码示例而被责骂.因此,这里是我怎么会喜欢使用它.
var myArray = [];
myArray.bind(function() {
console.log('wtf'); // Wed Thu Fri and what were you thinking?
});
Run Code Online (Sandbox Code Playgroud)
我不需要矫枉过正.我基本上知道我将使用的Array函数范围(push,pop,splice以及其他几个).这是使用骨干MVC的一种方式.我想在数组上运行逻辑,然后相应地突出显示视图.但该视图已附加到集合中.对该集合的任何更改都会在视图中重新呈现实际的DOM.我不希望这样.我想简单地想要在视图中为CSS添加或删除类到相应的DOM.
我正在尝试使用他们的Suitescript API在Netsuite中按库存项目类别进行搜索.以下代码按预期工作,因此我知道我已成功进行远程通信.但我很难过如何按类别搜索.
function NSTest() {
var items = [];
var filters = [
//new nlobjSearchFilter('price',null,'lessthan','20'),
new nlobjSearchFilter('thumbnailurl',null,'isnotempty')
//new nlobjSearchFilter('internalid',null,'is','60635')
];
var columns = [
new nlobjSearchColumn('itemid'),
new nlobjSearchColumn('salesdescription'),
new nlobjSearchColumn('storedisplaythumbnail'),
new nlobjSearchColumn('baseprice')
];
var results = nlapiSearchRecord('inventoryitemdetail',null,filters,columns);
for(var i=0,l=results.length; i < l; i++) {
var result = results[i];
var price = result.getValue('baseprice');
var thumbImage = result.getText('storedisplaythumbnail');
var desc = result.getValue('salesdescription');
var name = result.getValue('itemid');
var img = 'http://shopping.netsuite.com'+thumbImage;
var item = {desc:desc, price:price, name:name, img:img};
items.push(item);
}
response.write(JSON.stringify(items));
}
Run Code Online (Sandbox Code Playgroud)
这可以正常工作,但如果我取消注释该行: …
我有一个我要为Ajax提交Laravel表单时要调用的函数。如果页面无法提交和重新加载,我该如何处理?
这有效:(但Enter btn不会执行)
<?php echo Form::open(); ?>
<?php echo Form::button('Search', array('id'=>'searchbtn', 'class'=>'button radius right', 'onclick'=>'myFunction(this.form)')); ?>
<?php echo Form::close(); ?>
Run Code Online (Sandbox Code Playgroud)
这不是:
<?php echo Form::open(array('onsubmit' => 'myFunction(this)')); ?>
<?php echo Form::submit('Search', null, array('id'=>'searchbtn', 'class'=>'button radius right')); ?>
<?php echo Form::close(); ?>
Run Code Online (Sandbox Code Playgroud) var User = Backbone.Model.extend({
schema: {
date: {type: 'Date'}
}
});
var user = new User();
var form = new Backbone.Form({
model: user
}).render();
$('.bootstrap').append(form.el);
Run Code Online (Sandbox Code Playgroud)
我输入什么类型来使用包含的JQuery-UI datepicker?除此之外没有其他文件:
旧的jQuery编辑器仍然包含在内,但可能会被移动到另一个存储库:
jqueryui.List
jqueryui.Date(使用jQuery UI弹出日期选择器)
jqueryui.DateTime
模式类型用引号声明,我无法弄清楚jqueryui.Date的字符串是什么 - 而且这不能确定.
如何向 Material-UISlide组件添加缓动?我没有看到允许这样做的道具。但我在某处读到过一些关于传播道具的内容?
<Slide
in={variable}
timeout={500}
direction="right"
mountOnEnter={true}
unmountOnExit={true}
>
<Child />
</Slide>
Run Code Online (Sandbox Code Playgroud) 我正在使用Microsoft Azure云,需要在那里上传图像。它的类上载方法putBlob()和putBlobData()需要数据本身(不是资源)或目录字符串作为参数,在将图像实际写入Blob之前,这两个参数都不可用。
$fp = fopen($tmp_name, 'r');
$data = fread($fp, filesize($tmp_name));
fclose($fp);
//Setup watermark destination
$new_watermarked_image_name = "watermark.jpg";
// Create image resources
$image = imagecreatefromstring($data);
$watermark = imagecreatefrompng('images/watermark_large.png');
$copyright = imagecreatefrompng('images/copyright.png');
// Merge image resource s
$image = overlay_watermark_full_size($image, $watermark);
$image = overlay_watermark_lower_right($image, $copyright);
imagejpeg($image, $new_watermarked_image_name, 100);
//put original image
$AzureStorageBlob->putBlob("uploads", "name", $tmp_name);
//put watermarked image
$AzureStorageBlob->putBlobData("uploads", "name", ?); // ? needs to be data
Run Code Online (Sandbox Code Playgroud) 我将className添加fc-selected到任何选定的日期,以解决该选定单元格的背景颜色更改。我以为自己没有居所,只需要更改color下一个文本,就在以后才意识到日期事件不在日期单元中而是绝对位于日期单元之外时,我强行去除了几束头发。如何在日历中的选定日期定位事件的DOM?
基本上,日期单元格的背景颜色在选择时变为深红色,我需要标题文本临时更改为白色。
我想使用Atom或Sublime(最好是Atom)中的regex查找/替换函数,将所有出现的特定数值集替换为其各自的标量倍数。
例如,转换
headerContainer: {
fontSize:'1em',
padding: '1.5rem',
},
Run Code Online (Sandbox Code Playgroud)
至
headerContainer: {
fontSize: 16,
padding: 24,
},
Run Code Online (Sandbox Code Playgroud)
我的正则表达式发现:
(')([\d.]+)r?em(')
Run Code Online (Sandbox Code Playgroud)
我的正则表达式替换可能性:
$2 \* 16
Run Code Online (Sandbox Code Playgroud) javascript ×2
reactjs ×2
arrays ×1
atom-editor ×1
azure ×1
backbone.js ×1
enzyme ×1
extending ×1
forms ×1
fullcalendar ×1
jestjs ×1
laravel ×1
laravel-4 ×1
listener ×1
material-ui ×1
netsuite ×1
php ×1
react-hooks ×1
react-native ×1
regex ×1
sublimetext3 ×1
unit-testing ×1
upload ×1