小编Den*_*bin的帖子

componentWillReceiveProps,React Hook的componentDidUpdate

我遇到两个挑战:

  • 即使按照React准则,不鼓励派生状态,但某些边缘情况仍然需要它。
    就带有React Hook的功能组件而言,如果我确实需要派生状态,那么与React Hook等效的实现是什么?在类component中,将在每个父渲染器的componentWillReceiveProps中更新

参见下面的代码示例:

class App extends Component {
  constructor(props) {
    super(props);
    this.state = {
      count: props.count > 100 ? 100 : props.count,
    }

  }

  /*What is the equivalent implementation when React Hook is used here componentWillReceiveProps*/
  componentWillReceiveProps(nextProps) {
    if (nextProps.count !== this.props.count) {
      this.setState({
        count: nextProps.count > 100 ? 100 : nextProps.count
      });
    }
  }

  render() {
    return ( <
      div > {
        this.state.count
      } <
      /div>
    );
  }
}

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

  • 至于componentDidUpdate,当使用React …

javascript reactjs react-hooks

9
推荐指数
4
解决办法
9811
查看次数

为什么 componentDidMount 是触发 AJAX 请求的最佳位置

在很多 React 项目中都可以看到一个常见的用例,即 AJAX 请求在componentDidMounthook 时被触发。

我只是无法理解这个建议的做法,假设我们有下面的组件,其中 AJAX 请求依赖于propfromparent component并且MyComponent如果从它的父组件触发第二个渲染操作,则不会使用正确的 ajax 数据正确更新(与新道具)发生。componentDidMount但无论如何都不会被执行

所以我认为这种做法会引起问题,有人可以帮助确认并证明其合理性吗?或者纠正我,如果我错了。

export default class MyComponent extends Component {
  constructor() {
    super(...arguments);
  }
  
  async componentDidMount() {
    const data = await fireAjax(this.props.id);
    this.setState({data});
  }

  render() {
    const { data } = this.state;
    return (
        { data && <span>{data}</span> }
    );
  }
}
Run Code Online (Sandbox Code Playgroud)

javascript ajax reactjs

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

为什么webpack配置必须使用path.resolve和path.join

在webpack配置中常见的是,当我们需要设置路径path.resolvepath.join经常使用时,我只想弄清楚为什么我们必须使用它们而不是普通的字符串路径,例如'../dist'

我部分理解可能出于某种目的,它们用于返回绝对路径,但我认为普通的字符串路径也能够起作用.

例如

output: {
filename: '[name].js',
path: path.resolve(__dirname, '../dist'),
chunkFilename: 'js/[name].[chunkhash].js'
}
Run Code Online (Sandbox Code Playgroud)

javascript node.js webpack

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

为什么Angular(2~5)比AngularJS快

我们都知道AngularJS在变化检测方面建立一个消化循环,证明效率低于Angular.

我想知道

  1. Angular 如何解决这个性能问题?

  2. Angular是否也有类似机制的消化循环?如果没有,它如何知道何时发生变更并需要进行变更检测?

  3. 我知道Angular拥有一些功能,例如zone.js monkeypatch,单向组件树,变化检测策略,RXJS,immutableJS等.其中任何一个部分或直接驱动Angular在更改发生时更快地呈现UI.我无法通过一起正确使用这些技术来理解最终如何 Angular变得更快?

angularjs angular

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

标签 统计

javascript ×3

reactjs ×2

ajax ×1

angular ×1

angularjs ×1

node.js ×1

react-hooks ×1

webpack ×1