标签: react-fiber

虚拟 DOM 到底存储在哪里?

我已经折磨自己好几个小时了,却找不到答案。React 数据到底位于哪个对象/键下?我发现一个对象ReactRoot似乎存储了有关组件的所有信息,但我不知道它位于窗口(我猜?)对象中的位置。

它必须位于窗口对象下方的某个位置,对吧?

如果您拍摄内存快照并从列表中选择构造函数,chrome 将在(chrome 中的 $0ReactRoot )下创建对其的引用。$0

编辑

ReactRoot 的声明方式是否有可能导致其他对象无法访问它?这在js中怎么可能呢?React 没有得到浏览器的任何特殊待遇,不是吗?

javascript google-chrome-devtools reactjs react-fiber

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

如何按字符串名称呈现组件

我似乎无法使用名称字符串呈现组件.我希望能够动态生成具有可呈现的现有相应组件的组件名称字符串.

array常量会通过JSON数据来填充,这就是为什么我需要使用string值识别组件.

这是我正在尝试做的事情:

import Module1 from './module1';
import Module2 from './module2';
import Module3 from './module3';

const array = ['Module1', 'Module2', 'Module3'];

{array.map((Module, index) =>
 <Module />
)}
Run Code Online (Sandbox Code Playgroud)

React不是引用现有组件并呈现它,而是呈现全部小写的自定义元素标记.

注意:这些组件['Module1', 'Module2', 'Module3']创建为extends Component

arrays string components reactjs react-fiber

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

为什么 React 源代码中的效果被命名为“被动效果”?

schedulePassiveEffects作为一个非英语母语人士,我对React 源代码中的“被动效果”一词感到困惑cancelPassiveEffects。这里的“被动”到底是什么意思?

reactjs react-fiber

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

为什么不能根据道具反应设置初始状态

我有一个es6 react组件,我希望状态的初始值取决于传递的prop的初始值,但其值始终为false:

AttachStateToProps组件

<AttachStateToProps VALUE=false />
Run Code Online (Sandbox Code Playgroud)

AttachStateToProps组件:

class AttachStateToProps extends React.Component {
  state = {
    stateValue: this.props.VALUE,
  }
  render() {
    console.log('Value of Prop - ', this.props.VALUE)
    console.log('Value of State - ', this.state.stateValue)

  return null
  }
}
Run Code Online (Sandbox Code Playgroud)

每次更改prop VALUE的值时,我得到:

`Value of Prop - false` // this changes whenever I change prop value in 
   <AttachStateToProps />
Run Code Online (Sandbox Code Playgroud)

`Value of State - false` // this does not change accordingly.
Run Code Online (Sandbox Code Playgroud)

认为这可能与state / setState异步且较旧有关,getinitialState但我不知道为什么。

state ecmascript-6 reactjs es6-class react-fiber

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

当 Promise 出现错误时,不会调用 componentDidCatch

根据新的React 16 发布文档,它说

“React 16 会将渲染过程中发生的所有错误打印到开发中的控制台,即使应用程序意外吞掉了它们。”

我有一个组件和一个组件。我在 then 的承诺块中触发了一个错误。但它会调用 Promise 的 catch 方法,父级的 componentDidCatch 不会被调用。我不确定这是否是预期的行为。

这是jsfiddle https://jsfiddle.net/john1jan/Luktwrdm/14/

class Parent extends React.Component {  
  constructor(props){
    super(props);
    this.state={hasError:false}
  }

  render() {
    if(this.state.hasError){
      return <div>Something went wrong</div>
    }

    return (
      <div>
        <h1>I am parent</h1>
        <Child></Child>
      </div>
    );
  }
  componentDidCatch(error,errorInfo){
    this.setState({
      hasError:true
    })
  }
}

class Child extends React.Component {

  render() {
    return (
      <div>
        <h1>I am child</h1>
      </div>
    );
  }

  componentDidMount(){
    fetch("https://jsonplaceholder.typicode.com/posts").then((response) => {
      throw new Error("I am …
Run Code Online (Sandbox Code Playgroud)

reactjs react-fiber

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