今天我们了解下react中定义变量并使用方式。
-
React Native中的全局作用域是变量global.例如:as global.foo = foo,那么您可以在任何地方使用global.foo作为全局变量.
全局作用域可用于存储全局配置或类似内容.在不同的视图之间共享变量,根据您的描述,您可以选择许多其他解决方案(使用redux,flux或将它们存储在更高的组件中),全局范围不是一个很好的选择.
定义全局变量的一个好习惯是使用js文件.例如global.js
global.foo = foo; global.bar = bar;
然后,确保在项目初始化时执行它.例如,将文件导入index.js:
import './global.js' // other code
总结下,这里面涉及到了
-
1、变量如何定义
-
2、变量如何进行改变
-
3、方法如何调用
都写有详细的注释大家可详细观看适合刚学习react的新同学。
class Packaging extends React.Component{ // react 类组件 constructor(props) { super(props); this.state = { // 进行变量定义(会vue的同学:这个地方就相当于 data 的return里所定义的) // 例如 name:'定义name' }; this.getNameData();// 调用方法 } // 定义方法-写这个方法是为了给大家操作一下怎么改变定义的数据 getNameData() { http.get('接口名称').then(res => { // 第一种 this.setState({ // 使用this.setState来进行改变变量 name: res.data.name }); console.log(this.state.dataObj) // 打印不到的 // 第二种 this.setState({ name: res.data.name },() => { console.log(this.state.dataObj) // 可以打印到 }) }).catch(error => { console.error(error) }) } render() { return <div className="className">// className定义div的class名称 {this.state.name} </div> } }
react全局变量的设置
新建一个 util文件夾 —> tool.jsx
window._= { /** * 存储localStorage */ setStore:(name, content) =>{ if (!name) return; if (typeof content !== 'string') { content = JSON.stringify(content); } window.localStorage.setItem(name, content); }, /** * 获取localStorage */ getStore:(name) => { if (!name) return; return window.localStorage.getItem(name); }, /** * 清除localStorage */ clearStore:() => { window.localStorage.clear(); }, getQueryStringByName: function (name) { var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i"); var r = window.location.search.substr(1).match(reg); var context = ""; if (r != null) context = r[2]; reg = null; r = null; return context == null || context == "" || context == "undefined" ? "" : context; } }
在入口文件app.jsx里面引入
import "util/tool.jsx";
然后在其余的组件里面就可以访问到这个变量对象。