javascript - 在 React 中更新状态的优雅 ES6 方式

标签 javascript reactjs react-native ecmascript-6

在 React 中更新 state 的语法发生了很大变化。我正在尝试找到最简单优雅的方式来启动和更新它。

得到这个 RN 代码:

const { quotes } = require('./quotes.json')

class QuoteScreen extends Component {
  state = {
    QuoteIndex: 0
  }
  render() {
    return (
      <Image ...>
        <View ...>
          ...
          <ButtonNextQuote
            onPress={() => {
              this.setState((prevState, props) => {
                return {
                  QuoteIndex: (prevState.QuoteIndex + 1) % (quotes.length - 1)
                }
              })
            }}
          />
        </View>
      </Image>
    )
  }
}

是否可以减少onPressstate的更新?

希望避免调用匿名函数两次,但又不想引用和绑定(bind)处理程序。还想避免使用 return..

最佳答案

我会将更新函数存储在类外部的变量中,例如

const newState = ({QuoteIndex: i}) => ({QuoteIndex: (i + 1) % nQuotes});

(当然你可以选择以任何你喜欢的方式定义函数,如果它不是内联的,也许“简洁”对你来说不再那么重要了)

然后你可以调用this.setState(newState):

onPress={() => this.setState(newState)}

关于javascript - 在 React 中更新状态的优雅 ES6 方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44477692/

相关文章:

javascript - 如何格式化下拉列表中的日期?

reactjs - `TreeView` 、 `ObjectInspector` 、 `ConnectedTreeNode` 、 `ObjectRootLabel` 、 `ObjectPreview` 不直接支持 PropTypes 验证器

javascript - react native 预期字符串但得到对象

javascript - 使用 universal-cookie 在第一次渲染时获取 cookie 返回 undefined

javascript - React Native Flatlist 上拉时不刷新数据

reactjs - 获取断点以使用 jest、Visual Studio 代码和自定义 typescript 转换器

javascript - 通过 AJAX 渲染 Jade 模板并尝试独立于 HTML 传递/访问数据

javascript - ionic 导航按钮不显示

javascript - bootstrap-vue 输入数字的 MaxLength Vue.js

javascript - redux useDispatch - 不断重新加载页面