我有非常庞大和复杂的对象,如userInfo,chatInfo等,就像在具有非常大和嵌套信息的对象和数组中一样.每当我刷新页面时,就会在我的反应应用程序中,redux状态被重置,我必须再次调用所有这些API.
我做了一些关于这个主题的研究.我查看了Dan Abramov关于redux的egghead教程.他所做的是在浏览器的localStorage中维护redux状态,并在每100或500毫秒后更新localStorage.我觉得这就像是代码味道.
不断观察localStorage状态并更新它,不会影响浏览器的性能.我的意思是Angular 1失败的原因并不是因为它持续观察状态变量,过了一段时间,如果网站在浏览器中保存,它就会放慢速度.因为我们的脚本不断检查变量的状态.我觉得好像我们在这里做同样的事情.
如果在localStorage中维护redux状态是正确的方法可以有人告诉我为什么这样做?如果没有,是否有更好的方法?
随着React钩子的到来,我们是否应该将prop-types用于React定制钩子,例如,
import React from 'react';
import PropTypes from 'prop-types';
const useTitle = title => {
React.useEffect(() => {
document.title = title;
}, [title]);
}
useTitle.propTypes = {
title: PropTypes.string.isRequired,
};
export default useTitle;
Run Code Online (Sandbox Code Playgroud)
以上是验证传递给自定义React钩子的参数的好方法,还是应该采用其他方法来验证传递给自定义钩子的道具/参数,这基本上只是一个简单的函数。
像前端正在应用测试库jest
,enzyme
或者react-testing-library
是部分dependencies
还是devDependencies
在你的package.json
?
由于测试不是您的构建编译的一部分,我认为它应该在devDependencies
您的测试套件中,但您的测试套件主要在您的管道中运行,同时部署在服务器上,即 Jenkins、TravisCI 等。这让我想知道,因为它正在生产中使用dependencies
部分列出。
感谢您阅读这个问题。
我是vanilla javascript的忠实粉丝,目前我正在开发一个项目,我需要在鼠标滚轮上实现平滑滚动.我想用vanilla JS来实现它.我发现了一个关于做一些研究的jQuery片段,如下所示.
$(window).on('mousewheel DOMMouseScroll', function(e) {
var dir,
amt = 100;
e.preventDefault();
if(e.type === 'mousewheel') {
dir = e.originalEvent.wheelDelta > 0 ? '-=' : '+=';
}
else {
dir = e.originalEvent.detail < 0 ? '-=' : '+=';
}
$('html, body').stop().animate({
scrollTop: dir + amt
},500, 'linear');
});
Run Code Online (Sandbox Code Playgroud)
任何人都可以帮助我,如何在不使用jQuery或任何其他库的帮助程序库的情况下实现平滑滚动.
人们在jQuery中有很多实现.但我想要一个可以用vanilla JS做的最佳实现.这可以在React,Angular和Vue的任何地方实现.
我试图在React Native中实现类似的任何想法,我怎么能这样做
<form action="http://example.com/some-url-end-point" method="POST">
<input type="hidden" name="q" value="a">
</form>
Run Code Online (Sandbox Code Playgroud)
是否有可能在React Native中做类似的事情.我可以在Web应用程序中执行此操作.但在反应本机window.document
不存在.所以我不能动态地或以任何方式提交表格.
基本上发生的是我使用POST方法数据将一些数据发送到第三方支付网关.知道如何在React Native中实现这一目标吗?
编辑:
我需要一个在提交Web视图时更改的解决方案,该视图会更改浏览器的位置,并以post
方法格式将数据发送到该位置
我在Javascript实现中发现的一个类似的问题就是这个JavaScript发布请求就像表单提交 我需要在本机中实现类似的东西.
我已经和我一起工作Redux
了近一个月了.我的问题是,我将所有的应用程序数据放入其中redux store
,但是我是否应该将切换状态设置为帮助我更改redux
状态的UI,或者我应该只是在每个页面中进行本地管理
this.setState({ showActiveForm : false })
我正在寻找相关的陪同规则
执行以下操作时,编辑器将以红色突出显示
const baz = obj?.foo?.bar?.baz; // 42
const safe = obj?.qux?.baz; // undefined
const foo = obj.baz ?? 'default'; // default
// eslint-disable-next-line no-console
console.log('baz', baz);
// eslint-disable-next-line no-console
console.log('safe', safe);
// eslint-disable-next-line no-console
console.log('foo', foo);
Run Code Online (Sandbox Code Playgroud)
该代码可以正常工作,但是eslint用红色突出显示了我的代码。
参考:
我有一个对象数组:
var a = [
{"name": "BBB", "no": 2, "size1": [3], "size2": null },
{"name": "AAA", "no": 5, "size1": null, "size2": [1] },
{"name": "BBB", "no": 1, "size1": [2], "size2": null },
{"name": "AAA", "no": 4, "size1": null, "size2": [1] },
{"name": "BBB", "no": 1, "size1": null, "size2": [1] },
{"name": "AAA", "no": 5, "size1": [2], "size2": null },
{"name": "BBB", "no": 2, "size1": null, "size2": [1] },
];
Run Code Online (Sandbox Code Playgroud)
我想像这样排序,按name
升序排序,然后no
升序,然后按size1,如果它不为空.
起初,我可以对它进行排序name
和no
,但在那之后,我不知道如何排序size1 …
import React from 'react';
import PropTypes from 'prop-types';
import { connect } from 'react-redux';
import Actions from '../actions';
export const UserComponent = ({ foo, baz, bar, user, fetchUser }) => {
useEffect(() => {
console.log('##### I WAS CALLED I WAS CALLED');
fetchUser();
}, []);
return (
<div>
<p>{user.name}</p>
<p>{foo} {baz} {bar}</p>
</div>
);
};
UserComponent.propTypes = {
fetchUser: PropTypes.func.isRequired,
user: PropTypes.shape({}),
};
const mapActionsToProps = {
fetchUser: Actions.fetchUser,
};
const mapStateToProps = ({ data }) => ({
user: data.user,
}); …
Run Code Online (Sandbox Code Playgroud)我在 stack-overflow 上搜索过这个问题,但找不到任何与我的用例类似的东西。
我有这样的容器组件。
import React, { Component } from 'react';
import PropTypes from 'prop-types';
// API
import BookingAPI from '../../../../api/BookingAPI';
class CustomerProfilePage extends Component {
state = {
list: [],
totalRecords: 0,
pageNo: 1,
};
componentDidMount() {
const { pageNo } = this.state;
this.onGetBookingList({ pageNo });
}
onGetBookingList = async ({ pageNo = 0 }) => {
const { match } = this.props;
try {
const result = await BookingAPI.onGetBookingList({
passengerId: match.params.customerId,
sortProperties: ['id'],
limitCount: 10,
pageNo,
});
this.setState({ …
Run Code Online (Sandbox Code Playgroud) javascript ×7
reactjs ×5
eslint ×2
redux ×2
arrays ×1
babeljs ×1
enzyme ×1
forms ×1
jestjs ×1
mocking ×1
mouseevent ×1
mousewheel ×1
node.js ×1
object ×1
package.json ×1
react-hooks ×1
react-native ×1
sorting ×1
state ×1