小编Max*_*ynn的帖子

你如何为 getInitialProps 编写 Jest 测试?

static async getInitialProps({ query }) {
  let content;
  let alert;

  try {
    const first = query.first ? query.first : '';
    content = await getContent(first);
  } catch (error) {
    alert = 'There was an error loading data, please try again.';
    content = [];
  }

  return {
    content,
    alert,
  };
}
Run Code Online (Sandbox Code Playgroud)

我正在尝试为这个逻辑编写测试,但因为它是服务器端代码,我很难理解我如何为它编写测试,因为它在 instance() 中对我不可用。

谷歌没有向我展示这个方法,所以我想知道其他人是如何解决为 getInitial props 编写测试的。

javascript reactjs jestjs next.js

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

如何使用 FormData 发送 event.target 来模拟函数

我正在尝试模拟一个使用FormData. 该函数接受依赖于目标中某些内容的事件参数。

  buildFormData: (event) => {
    event.preventDefault();
    const { target } = event;
    const data = new FormData(target);

    if (target.querySelectorAll('.ant-select').length) {
      const selectTags = target.querySelectorAll('.ant-select');

      selectTags.forEach((selectTag) => {
        const value = selectTag.querySelector('.ant-select-selection-selected-value').getAttribute('title');
        const property = selectTag.getAttribute('id');
        data.append(property, value);
      });
    }

    const getDataObject = {};

    for (var pair of data.entries()) {
      // Ensures that the data from the forms have a value
      if (pair[1]) {
        getDataObject[pair[0]] = pair[1];
      }
    }

    return getDataObject;
  }
Run Code Online (Sandbox Code Playgroud)

我想确保该函数从模拟表单返回一个值对象。

我试过通过:

const event = { …
Run Code Online (Sandbox Code Playgroud)

reactjs jestjs enzyme

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

React - 如何获得样式组件的顶部位置?

当你不知道React的方式时,过去很简单的东西会非常复杂.

我正在尝试创建一个组件,当它到达页面顶部时就像一个粘性页眉或页脚.

目前我非常满足于添加以下内容:

  componentDidMount() {
    window.addEventListener('scroll', this.onScroll, false);
  }

  componentWillUnmount() {
    window.removeEventListener('scroll', this.onScroll, false);
  }
Run Code Online (Sandbox Code Playgroud)

然而,我已经找到了如何获得样式组件的滚动顶部位置.所以假设我有一个调用的样式组件,Container并输出一个表单我通常只是添加一个数据属性,并执行如下所示的操作:

const container = document.getElementbyTag("data-sticky-container")
const position = container.offsetTop 
Run Code Online (Sandbox Code Playgroud)

我将如何在React中执行此操作?


更新

现在用ref.我遇到了一个没有定义电流的问题:

  constructor(props) {
    super(props);
    this.optionBox = React.createRef();
  }

  componentDidMount() {
    window.addEventListener('scroll', this.onScroll, false);
  }

  componentWillUnmount() {
    window.removeEventListener('scroll', this.onScroll, false);
  }

  onScroll() {
    console.log(this.optionBox.current.offsetTop);
  }
Run Code Online (Sandbox Code Playgroud)

javascript css reactjs

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

React - 在组件函数内调用props函数

试着这样做:

//组件一

toggleDropdown() {
  setState({open: !open}
}

render () {
  return (
   ChildComponent toggle={this.toggleDropdown} />
  )
}
Run Code Online (Sandbox Code Playgroud)

然后在我的子组件中,我想在另一个函数中调用toggleDropdown函数,如下所示:

// This gets triggered on click.
removeItem() {
  // remove scripts then:
  this.props.toggleDropdown()
}
Run Code Online (Sandbox Code Playgroud)

我以为你可以做这样的事情,但似乎你只能在元素上调用prop函数?

javascript reactjs

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

标签 统计

reactjs ×4

javascript ×3

jestjs ×2

css ×1

enzyme ×1

next.js ×1