- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试使用新的 getDerivedStateFromProps我的 React Native 组件中的生命周期方法,但从未调用过该方法。我试过查找但找到了 no issues在 native repo 协议(protocol)中。 StackOverflow 或 Google 也没有结果。
我确实找到了一个 reddit thread和一个 StackOverflow issue两者都引用更新 react-dom
作为解决方案,这在这种情况下不起作用,因为 React Native 中没有 dom。
任何人都可以确认此方法是否应该在 React Native 中工作吗?如果可以使用,将不胜感激解决此问题的任何帮助。
下面是我的组件的简化版本:
import React from 'react';
import PropTypes from 'prop-types';
import { connect } from 'react-redux';
import { Auth } from '../redux';
import ChillaAPI from '../api';
const withUserData = WrappedComponent => {
class UserDataLoader extends React.Component {
static getDerivedStateFromProps(props, state) {
console.log('getDerivedStateFromProps');
if (props.uid !== state.uid) {
return {
uid: props.uid,
};
}
return state;
}
state = { uid: null };
render() {
console.log({ propsUid: this.props.uid });
console.log({ stateUid: this.state.uid });
return <WrappedComponent />;
}
}
UserDataLoader.propTypes = {
uid: PropTypes.bool.isRequired,
};
return connect(mapStateToProps)(UserDataLoader);
};
function mapStateToProps(state) {
return {
uid: Auth.selectors.getUid(state),
};
}
export default withUserData;
组件的日志输出如下:
{ propsUid: null }
{ stateUid: null }
{ propsUid: 'jW78ej3JDgPpheadAlcrkG8UIZB2' }
{ stateUid: null }
这是我的 package.json 以备不时之需:
{
"name": "Chilla",
"version": "0.0.1",
"private": true,
"scripts": {
"start": "node node_modules/react-native/local-cli/cli.js start",
"start:reset": "node node_modules/react-native/local-cli/cli.js start --reset-cache",
"watch:lint": "node node_modules/eslint-watch/bin/esw -w",
"test": "jest",
"precommit": "lint-staged"
},
"lint-staged": {
"*.js": [
"node_modules/.bin/prettier --single-quote --trailing-comma es5 --write",
"eslint",
"git add"
]
},
"dependencies": {
"axios": "^0.18.0",
"firebase": "^4.13.1",
"husky": "^0.14.3",
"lint-staged": "^7.0.4",
"prop-types": "^15.6.1",
"react": "16.3.1",
"react-native": "^0.52.2",
"react-native-fetch-blob": "^0.10.8",
"react-native-image-picker": "^0.26.7",
"react-navigation": "^1.5.11",
"react-redux": "^5.0.7",
"recompose": "^0.27.0",
"redux": "^4.0.0",
"redux-logger": "^3.0.6"
},
"devDependencies": {
"babel-eslint": "^8.2.3",
"babel-jest": "22.4.3",
"babel-preset-react-native": "4.0.0",
"eslint": "^4.19.1",
"eslint-config-airbnb": "^16.1.0",
"eslint-config-prettier": "^2.9.0",
"eslint-plugin-import": "^2.11.0",
"eslint-plugin-jsx-a11y": "^6.0.3",
"eslint-plugin-react": "^7.7.0",
"eslint-plugin-react-native": "^3.2.1",
"eslint-watch": "^3.1.4",
"jest": "22.4.3",
"prettier": "^1.12.1",
"react-test-renderer": "16.3.1"
},
"jest": {
"preset": "react-native"
}
}
最佳答案
更新到 react-native@0.55.3
解决了这个问题
关于javascript - getDerivedStateFromProps 未在 React Native 中调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50098764/
我已经阅读了reactjs.org上有关getDerivedStateFromProps的文档。我看过用例。我明白为什么要使用它。 但我无法弄清楚它如何处理返回值。因此我的问题是,当它返回时.....
我使用 React 16.3.1 和 next.js。 我将 getDerivedStateFromProps 放入扩展 PureComponent 的类中。 这是代码: Header.js impo
在此示例中 https://codepen.io/ismail-codar/pen/QrXJgE?editors=1011 class Counter extends React.Component
如何在静态 getDerivedStateFromProps 中调用组件函数? 这是我的代码 class Box extends Component { updateVariables() {
根据这篇关于 what's news in React 16.3 的帖子,在下一次更新中 componentWillReceiveProps 将有一个替代品,即 getDerivedStateFrom
从API和React架构设计的角度来看,是否有任何问题使其静态化? 最佳答案 Making certain lifecycles static to prevent unsafe access of
如何比较数组中的状态?我无法使用 !== 或使用 .length static getDerivedStateFromProps(props, state) { if(props.langua
我正在探索 React,但对生命周期方法和父子通信有些困惑。具体来说,我正在尝试创建一个组件,它包装一个选择元素并在选择“其他”选项时添加一个输入框。我已经使用 getDerivedStateFrom
我是 React 的新手,只是一个关于在 getDerivedStateFromProps 生命周期方法中访问静态属性的问题,下面是我的代码: export default Child extends
在 React 组件中使用 getDerivedStateFromProps 生命周期方法时,返回的状态是完全覆盖组件的现有状态,还是只是更新返回的特定状态属性?例如, class foo exten
我在最新的 React 16.5.2 中使用 getDerivedStateFromProps 生命周期钩子(Hook)。为什么我无法访问组件的 this 对象?我做错了什么吗? class Emai
我还没有研究静态 getDerivedStateFromProps,所以我试图了解它。 我知道 React 通过引入一个名为 static getDerivedStateFromProps() 的新生
componentWillReceiveProps 和 getDerivedStateFromProps 到底是什么对我来说是个微妙的问题。因为,我在使用 getDerivedStateFromPro
我正在更新一个遗留组件,它使用: shouldComponentUpdate() 以避免昂贵的状态重新计算 componentWillUpdate() 进行重新计算并在 1 通过时呈现 docs说 i
我正在将一个类组件转换为一个函数组件,并想看看 useEffect()可以替换以下静态函数 static getDerivedStateFromProps(props) { const { p
getDerivedStateFromProps is being added as a safer alternative to the legacy componentWillReceivePro
如 this React Github issue 中所读我看到越来越多 the cost of render() is relatively small 在 React 16.3 中,我想知道为什么
我想将状态变量 books 设置为 API 的结果。我无法在 componentDidMount 中执行此操作,因为我一开始没有 token ,需要它从 API 获取结果。当我运行以下代码时,状态bo
我对 getDerivedStateFromProps 如何与 Mobx 可观察对象有一些误解。我知道,Mobx 对“读取”属性(通过“点入”)、可跟踪函数等使用react。 例如,我存储了可观察对象
我不明白,为什么当我尝试在 getDerivedStateFromProps 方法中启动函数 getTodosList - 它总是向我返回 TypeError - Cannot read proper
我是一名优秀的程序员,十分优秀!