小编Mur*_*ami的帖子

使用 axios 处理 async await 语法中的错误

这是我的代码块:

  const getToken = async () => {
    try {
      const token = await axios.post(keys.sessionURL, {
        email: keys.verificationEmail,
        password: keys.verificationPassword,
      });
    } catch (err) {
      throw new Error('Unable to establish a login session.'); // here I'd like to send the error to the user instead
    }
  };
Run Code Online (Sandbox Code Playgroud)

如您所见,我正在连接到外部服务器以获取令牌。这有效。现在,我想捕获一个错误,但这次不是“抛出新错误”,但我想将其发送给用户,因此我想改为使用以下内容:

res.status(401).send('Unable to get a token');
Run Code Online (Sandbox Code Playgroud)

但是因为我不在路由处理程序中,所以我不能使用“res”。那么如何将其发送给用户?

谢谢!

node.js express

18
推荐指数
6
解决办法
4万
查看次数

在 React 中使用 setState 更改样式属性

我有点不好意思问你这个问题,因为我相信解决这个问题很简单,而且很基本。但我仍然坚持这一点。

我想改变我的风格,例如。当 onscroll 事件触发时,我的 div 的 backgroundColor ,但这似乎不起作用。在尝试将其设置为这样的 backgroundColor:this.state.backgroundColor 时,出现错误:无法读取未定义的属性“状态”

提前致谢!

这是我的代码:

import React, { Component } from 'react';

class Header extends Component {
    constructor(props) {
        super(props);
        this.state = {
            backgroundColor: 'black',
        };
    }

    componentDidMount() {
        const headerElement = this.refs.header;
        const sticky = headerElement.offsetTop;
        window.addEventListener('scroll', () => this.handleScroll(sticky)); 
    }

    handleScroll(sticky) {
        if (window.pageYOffset >= sticky) {
            this.setState({
                backgroundColor: 'yellow'
            });
        }
    }

    render() {
        const { containerStyle } = styles;
        return (
            <header style={containerStyle} ref='header'> {this.props.text} </header>
        );
    }
} …
Run Code Online (Sandbox Code Playgroud)

css reactjs

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

Webpack 4,this.htmlWebpackPlugin.getHooks不是函数

我正在从webpack 3迁移到4,这很痛苦;)

我收到此错误:

this.htmlWebpackPlugin.getHooks is not a function
Run Code Online (Sandbox Code Playgroud)

我正在尝试升级所有插件,但也许我在这里缺少什么?

webpack

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

滚动到 React.js 中的某个部分时突出显示菜单项

不能解决那个。我正在创建具有滚动到功能的导航栏,即。当按下某个菜单项时,页面会滚动到相应的部分。虽然这似乎很简单,但我不知道如何在窗口到达该部分的重点时以不同的颜色突出显示此特定菜单项。例如 用户按下“联系人”,页面滚动到联系人部分,联系人菜单项的颜色变为红色。感谢您的任何帮助!

这是我的代码:

import React, { Component } from 'react';
import Container from './Container.jsx';

class Header extends Component {
    constructor(props) {
        super(props);
        this.state = {
            backgroundColor: 'rgba(34,34,34,0)',
        };
    }

    componentDidMount() {
        window.addEventListener('scroll', () => this.handleScroll());
    }

    handleScroll(e) {
        const test = (pageYOffset > 900) ? 
        (this.setState({ backgroundColor: 'black' })) : 
        (this.setState({ backgroundColor: 'rgba(34,34,34,0)' }));
    }

    handleClick(e) {
        e.preventDefault();       
        const elementOffsetTop = document.getElementById(e.target.innerText).offsetTop;
        window.scrollTo(0, elementOffsetTop);
    }

    handleUp(e) {
        e.preventDefault();
        window.scrollTo(0, 0);
    }

    render() {
        const menuItems = [
            { menuItem: 'O …
Run Code Online (Sandbox Code Playgroud)

javascript reactjs

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

玩笑/酶测试中的 setTimeout

这是我的代码块:

   it("saving flow (entering into edit mode and saving) works correctly", (done) => {

const wrapper = mount(
  <Root>
    <DictionaryRooms/>
  </Root>
);

moxios.wait(() => {
  wrapper.update();


  wrapper.find('.btn-dark').at(1).simulate('click');

  setTimeout(() => {
    expect(wrapper.find('.editField span').at(0).text().trim()).toEqual(jsonDataRooms.data[0].name);
  }, 1000);

  done();
  wrapper.unmount();
})

  });
Run Code Online (Sandbox Code Playgroud)

如您所见,我正在尝试模拟单击按钮,这在我的应用程序中会导致从后端服务器下载一些新数据。这些数据将在我的后端数据进入后立即可见,然后将显示出来。因此,在我的请求完成后,我再次尝试检查新数据是否符合我的预期。很明显,点击后需要时间下载,过一会就会显示出来。这就是为什么我需要像 setTimeout 这样的东西。但这行不通。不知道为什么...

感谢您的任何建议。

reactjs jestjs enzyme

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

React Table 中的水平滚动

我在获得非常基本的功能方面遇到了问题,即。当页面小于表格大小时,我想在 React 表格​​上设置水平滚动。我的代码中没有任何异常,但无论如何我都会把它留在这里:

<ReactTable
  data={bookingPerson}
  columns={columns}
  className="-striped -highlight"
  defaultPageSize={7}
  loading={loading}
/>
Run Code Online (Sandbox Code Playgroud)

reactjs react-table

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

将参数传递给react-apollo-hooks useQuery

使用react-apollo-hook时如何将参数传递给useQuery?

这不起作用:

  const { data, loading, error } = useQuery(GET_DATA,
{ variables: { id: 'testId' }});
Run Code Online (Sandbox Code Playgroud)

以及查询本身:

export const GET_DATA = gql`
{ query ($id: String) {
  document(id: $uid) {
    uid
  }  
 }
}
`;
Run Code Online (Sandbox Code Playgroud)

reactjs graphql react-hooks

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

我可以将输出值传递给 Terragrunt 中的 after hook 吗?

有没有一种好的方法可以将 Terraform output\xe2\x80\x99s 值传递给由 Terragrunt 中的 after hook 触发的 bash 脚本?我找不到任何好的功能来做到这一点。

\n

terragrunt

6
推荐指数
0
解决办法
303
查看次数

使用钩子看不到方法辅助函数内部的状态

我看不到我正在使用的辅助方法内部的更新状态。所有这些都在基于类的组件中工作,但在使用钩子时似乎不一样。看看我的评论。

import React, { useEffect, useRef, useState } from 'react';
import { createPortal } from 'react-dom';
import ReactPlayer from 'react-player';

import { VIMEO_URL } from '../../consts/urls';
import storage from '../../utils/localStorage';

const STORAGE_VIDEOS_DATA_KEY = 'VIDEOS_DATA';

import './VideoItem.scss';


const VideoItem = ({ vimeoId }) => {
  useEffect(() => {
    window.addEventListener(
      'beforeunload',
      saveStateToLocalStorage
    );

    return () => {
      window.removeEventListener(
        'beforeunload',
        saveStateToLocalStorage
      );

      saveStateToLocalStorage();
    };
  }, []);


  const [ videoProgress, setVideoProgress ] = useState(0);

  const saveStateToLocalStorage = () => {
    const videosPlayedDuration = { …
Run Code Online (Sandbox Code Playgroud)

reactjs react-hooks

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

在回调中反应自定义钩子

我正在尝试在回调逻辑中使用我的自定义钩子,如下所示:

import React, { useEffect, useState } from 'react';
import useDataChange from '../../hooks/useDataChange';


const SomeComponent = () => {
  return (
    <Table
      handleTableChange={data => useDataChange(data)}
    />
  );
};


export default SomeComponent;
Run Code Online (Sandbox Code Playgroud)

我的自定义钩子(只是为了简化)看起来像这样:

const useDataChange = data => {
  console.log(data);
};

export default useDataChange;
Run Code Online (Sandbox Code Playgroud)

简而言之,应该在表中的数据发生更改时触发自定义钩子(即,当触发 Table 组件中的 handleTableChange 时)。相反,我得到:

React Hook "useDataChange" 不能在回调中调用。React Hooks 必须在 React 函数组件或自定义 React Hook 函数中调用 react-hooks/rules-of-hooks

表数据改变时如何使用?

javascript reactjs react-hooks

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