美文网首页
2018-10-29

2018-10-29

作者: 花花怪女 | 来源:发表于2018-10-29 10:36 被阅读0次

React-native中遇到的问题:

[图片上传失败...(image-742e6f-1540780288362)]

环境配置问题,没有连接adb或者没连接成功

解决办法:运行命令提示符:adb connect 127.0.0.1:62001

[图片上传失败...(image-315c72-1540780288362)]

问题出现是服务没有开启,进入到项目目录启动服务,运行代码:

react-native start

3. could not get batchedbridge, makesure your bundle is packaged correctly

解决办法:运行React-native run-Android或引入到Android Studio中运行,然后摇动手机(Android端),重新配置好IP和端口号

  1. 替换项目中的图片,终端每次报错。

解决办法:关闭终端,杀掉App,重新运行此项目。原因可能是react-native还不太成熟。或是图片名字没改,图片换了。

5.react native - expected acomponent class, got [object Object]

该错误可能是你引用了小写的组件,组件首字母一定要大写,比如<login/>应该写成<Login/>

调试方法:

1.开发者菜单的Reload选项

Reload代表重新加载程序的js代码,意味着程序会重新运行,并且你修改过后的js代码会更新,并运行.也就是开发者菜单中的第一项.每次修改代码,需要重新运行,只需调出开发者菜单,选中Reload即可.

[图片上传失败...(image-8508d7-1540780288360)]

[图片上传失败...(image-147286-1540780288360)]

如何在一个项目中切换运行不同页面:

1.在A页面中实现一个声明一个函数refresView()

2.在A页面push参数中增加一个回掉函数callBack(msg)

3.在B页面pop时候调用callBack将值传回,更新界面

代码的实现:

A页面实现:

/**

*/

import React, { Component } from 'react';

import {

AppRegistry,

StyleSheet,

Text,

Navigator,

ToastAndroid,

View

} from 'react-native';

import Button from './Button';

import Test from './test';

var _navigator;

var d;

class Hello2 extends Component {

constructor(props){

 super(props);

  d = this;

  this.state = {city:''}

//  this.refeshView = this.refeshView.bind(this);                      

}

configureScene(route){

  return Navigator.SceneConfigs.FadeAndroid;

}

refeshView(msg){

console.log('刷新');

d.setState({'city':msg});

console.log('end');

}

renderScene(router, navigator){

  console.log(d);

  _navigator = navigator;

  if(router.id === 'main'){

  return <View style={styles.container}>

  <Button  onPress={() => {

           console.log('start');

            _navigator.push({title:'MainPage',id:'page',callBack:(msg)=>{

             console.log(d);

             d.refeshView(msg);

             console.log('end');}});     

      }} text={'打开'} style={styles.instructions} disabled = {false}/>

    <Text style={styles.welcome}>

      {d.state.city}

    </Text>

    <Text style={styles.instructions}>

    </Text>

    <Text style={styles.instructions}>

      Press Cmd+R to reload,{'\n'}

      Cmd+D or shake for dev menu

    </Text>

  </View>

  }else if(router.id === 'page'){

    return (

    <Test navigator={navigator} router={router}/>

  );

  }

}

render() {

return (

<Navigator

            initialRoute={{ title: 'Main', id:'main'}}

            configureScene={this.configureScene}

            renderScene={this.renderScene} />

);

}

}

const styles = StyleSheet.create({

container: {

flex: 1,

justifyContent: 'center',

alignItems: 'center',

backgroundColor: '#F5FCFF',

},

welcome: {

fontSize: 20,

textAlign: 'center',

margin: 10,

},

instructions: {

textAlign: 'center',

color: '#333333',

marginBottom: 5,

},

});

AppRegistry.registerComponent('Hello2', () => Hello2);

B页面的实现

import React, { Component } from 'react';

import {

AppRegistry,

StyleSheet,

Text,

View

} from 'react-native';

var _navigator;

import Button from './Button';

class Test extends Component {

render() {

return (

  <View style={{flex:1}}>

    <Button  onPress={() => {

         console.log(this.props);

         this.props.router.callBack('I am a Student');

         this.props.navigator.pop();

      }} text={'返回'} style={styles.instructions} disabled = {false}/>

  </View>

);

}

}

const styles = StyleSheet.create({

instructions: {

textAlign: 'center',

color: '#126798',

marginTop: 50,

}

});

module.exports = Test;

相关文章

网友评论

      本文标题:2018-10-29

      本文链接:https://www.haomeiwen.com/subject/xkzvtqtx.html