要在应用程序中更改视图,可以使用setState-这将重新渲染您的组件及其任何子组件。setState在新状态和先前状态之间执行浅表合并,并触发组件的重新呈现。
setState 接受键值对象或返回键值对象的函数
键值对象
this.setState({myKey: 'myValue'});
功能
使用函数对于基于现有状态或道具更新值很有用。
this.setState((previousState, currentProps) => { return { myInteger: previousState.myInteger+1 } })
您还可以传递一个可选的回调函数setState,当组件以新状态重新渲染时将触发该回调函数。
this.setState({myKey: 'myValue'}, () => { // 组件已重新渲染...做一些了不起的事情! ));
import React, { Component } from 'react'; import { AppRegistry, StyleSheet, Text, View, TouchableOpacity } from 'react-native'; export default class MyParentComponent extends Component { constructor(props) { super(props); this.state= { myInteger: 0 } } getRandomInteger() { const randomInt = Math.floor(Math.random()*100); this.setState({ myInteger: randomInt }); } incrementInteger() { this.setState((previousState, currentProps) => { return { myInteger: previousState.myInteger+1 } }); } render() { return <View style={styles.container}> <Text>Parent Component Integer: {this.state.myInteger}</Text> <MyChildComponent myInteger={this.state.myInteger} /> <Button label="Get Random Integer" onPress={this.getRandomInteger.bind(this)} /> <Button label="Increment Integer" onPress={this.incrementInteger.bind(this)} /> </View> } } export default class MyChildComponent extends Component { constructor(props) { super(props); } render() { // this will get updated when "MyParentComponent" state changes return <View> <Text>Child Component Integer: {this.props.myInteger}</Text> </View> } } export default class Button extends Component { constructor(props) { super(props); } render() { return <TouchableOpacity onPress={this.props.onPress}> <View style={styles.button}> <Text style={styles.buttonText}>{this.props.label}</Text> </View> </TouchableOpacity> } } const styles = StyleSheet.create({ container: { flex: 1, justifyContent: 'center', alignItems: 'center', backgroundColor: '#F5FCFF', }, button: { backgroundColor: '#444', padding: 10, marginTop: 10 }, buttonText: { color: '#fff' } }); AppRegistry.registerComponent('MyApp', () => MyParentComponent);
问题内容: 我注意到可以这样导入: …或像这样: 第一个导入模块中的所有内容(请参阅:导入整个模块的内容) 第二个仅导入模块导出(请参阅:导入默认值) 似乎这两种方法是不同的,并且根本上是不兼容的。 为什么它们都起作用? 请参考源代码并解释该机制…我有兴趣了解其工作原理。 ES6常规模块信息回答了该问题。 我在问使模块像这样工作的机制。在这里,它似乎与源代码中的 “ hacky”导出机制有关,但尚
这篇快速上手指南会教你如何将TypeScript与React结合起来使用。 在最后,你将学到: 使用TypeScript和React创建工程 使用TSLint进行代码检查 使用Jest和Enzyme进行测试,以及 使用Redux管理状态 我们会使用create-react-app工具快速搭建工程环境。 这里假设你已经在使用Node.js和npm。 并且已经了解了React的基础知识。 我们之所以使
我已经改用react Native制作跨平台应用程序(虽然没有制作)。我只是想要一个答案,我的问题,反应和反应之间的区别。我在网上搜索了一下,但没有找到合适的答案。
问题内容: 与 哪个更好,为什么? 还是除了以后编写更少的代码外没有其他区别? 写作是否意味着只导入Component对象? 问题答案: 让您代替。它减少了React名称空间的键入和重复,这通常是一种理想的现代编码约定。 此外,Webpack 2和Rollup之类的工具会“摇晃”,这意味着任何未使用的导出都不会捆绑到您的最终代码中。使用/,您可以保证所有React的源代码都将被捆绑。使用,某些工具
本文向大家介绍react-native 启动React Native Packager,包括了react-native 启动React Native Packager的使用技巧和注意事项,需要的朋友参考一下 示例 在最新版本的React Native上,无需运行打包程序。它将自动运行。 默认情况下,这将在端口8081上启动服务器。要指定服务器所在的端口
我正在使用“React admin”创建一个管理界面(前端)。我正在使用spring boot作为我的REST API。我的React应用程序的url是:“http://localhost:3000”。我的spring boot API的url是:“http://localhost:8080”。 下面是CORS配置的spring boot代码,它在一个单独的类中,称为CORSCONFIG: 下面是
主要内容:React 实例React 支持一种非常特殊的属性 Ref ,你可以用来绑定到 render() 输出的任何组件上。 这个特殊的属性允许你引用 render() 返回的相应的支撑实例( backing instance )。这样就可以确保在任何时间总是拿到正确的实例。 使用方法 绑定一个 ref 属性到 render 的返回值上: 在其它代码中,通过 this.refs 获取支撑实例: 完整实例 你可以通过使用
主要内容:React 实例React 组件的数据可以通过 componentDidMount 方法中的 Ajax 来获取,当从服务端获取数据时可以将数据存储在 state 中,再用 this.setState 方法重新渲染 UI。 当使用异步加载数据时,在组件卸载前使用 componentWillUnmount 来取消未完成的请求。 以下实例演示了获取 Github 用户最新 gist 共享描述: React 实例 cla