小编Ade*_*ran的帖子

窗口重新加载(客户端)上的Redux状态重置

我有非常庞大和复杂的对象,如userInfo,chatInfo等,就像在具有非常大和嵌套信息的对象和数组中一样.每当我刷新页面时,就会在我的反应应用程序中,redux状态被重置,我必须再次调用所有这些API.

我做了一些关于这个主题的研究.我查看了Dan Abramov关于redux的egghead教程.他所做的是在浏览器的localStorage中维护redux状态,并在每100或500毫秒后更新localStorage.我觉得这就像是代码味道.

不断观察localStorage状态并更新它,不会影响浏览器的性能.我的意思是Angular 1失败的原因并不是因为它持续观察状态变量,过了一段时间,如果网站在浏览器中保存,它就会放慢速度.因为我们的脚本不断检查变量的状态.我觉得好像我们在这里做同样的事情.

如果在localStorage中维护redux状态是正确的方法可以有人告诉我为什么这样做?如果没有,是否有更好的方法?

javascript state local-storage reactjs redux

15
推荐指数
4
解决办法
3981
查看次数

自定义反应挂钩的原型

随着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钩子的参数的好方法,还是应该采用其他方法来验证传递给自定义钩子的道具/参数,这基本上只是一个简单的函数。

reactjs

13
推荐指数
1
解决办法
5927
查看次数

jest/enzyme 应该是 devDependency 还是依赖

像前端正在应用测试库jestenzyme或者react-testing-library是部分dependencies还是devDependencies在你的package.json

由于测试不是您的构建编译的一部分,我认为它应该在devDependencies您的测试套件中,但您的测试套件主要在您的管道中运行,同时部署在服务器上,即 Jenkins、TravisCI 等。这让我想知道,因为它正在生产中使用dependencies部分列出。

感谢您阅读这个问题。

javascript node.js package.json

13
推荐指数
1
解决办法
3567
查看次数

在香草javascript鼠标滚轮上平滑垂直滚动?

我是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的任何地方实现.

javascript mouseevent mousewheel mouselistener

8
推荐指数
1
解决办法
1万
查看次数

React Native post请求,如表单提交

我试图在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发布请求就像表单提交 我需要在本机中实现类似的东西.

javascript forms react-native

7
推荐指数
2
解决办法
2104
查看次数

是否应将应用程序状态存储在本地状态或Redux Store中

我已经和我一起工作Redux了近一个月了.我的问题是,我将所有的应用程序数据放入其中redux store,但是我是否应该将切换状态设置为帮助我更改redux状态的UI,或者我应该只是在每个页面中进行本地管理

this.setState({ showActiveForm : false })

reactjs redux

6
推荐指数
3
解决办法
3726
查看次数

可选链接和无效合并运算符的Eslint规则

我正在寻找相关的陪同规则

  • @ babel / plugin-proposal-optional-chaining
  • @ babel / plugin-proposal-nullish-coalescing-operator

执行以下操作时,编辑器将以红色突出显示

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用红色突出显示了我的代码。

参考:

javascript eslint babeljs

6
推荐指数
3
解决办法
1822
查看次数

Javascript - 如何通过3种不同的属性类型对对象数组进行排序?(String,Integer,Boolean)

我有一个对象数组:

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,如果它不为空.

起初,我可以对它进行排序nameno,但在那之后,我不知道如何排序size1 …

javascript arrays sorting object

5
推荐指数
1
解决办法
78
查看次数

Eslint React Hooks 错误:eslint-plugin-react-hooks 对 useEffect 中的函数依赖项进行了详尽的 deps 警告

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)

javascript reactjs eslint react-hooks

1
推荐指数
1
解决办法
8704
查看次数

Jest 异步 API 模拟

我在 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)

mocking reactjs jestjs enzyme

0
推荐指数
1
解决办法
3458
查看次数