关于线程应该看哪一章啊?



  • 举个例子来说,我想让一个Text每秒自动加1怎么写?

    自问自答小能手

    0


  • 额,我刚才写了一个秒表程序,感谢晴明大大
    index.ios.js:
    'use strict';

    var React = require('react-native');
    var {
    AppRegistry,
    TextInput,
    StyleSheet,
    Text,
    TouchableHighlight,
    View,
    } = React;
    var canDo=false;
    var temp;
    var ok=true;
    var AwesomeProject = React.createClass({
    plus:function(){
    if(canDo){
    temp=this.state.num;
    temp++;
    this.setState({num:temp});
    }
    },
    getInitialState:function(){
    return {num:0,numt:0};
    },
    show:function(){
    this.setState({num:this.state.numt});
    },
    stop:function(){
    canDo=false;
    },
    start:function(){
    if(ok){
    setInterval(this.plus,1000);
    ok=false;
    }
    canDo=true;
    },
    render:function(){
    return (
    <View style={styles.container}>
    <View>
    <Text>
    {this.state.num}
    </Text>
    </View>
    <View>
    <TextInput
    style={{height:40,borderColor:'gray',borderWidth:1}}
    onChangeText={(text)=>this.setState({numt:text})}
    value={this.state.num}/>
    </View>
    <View>
    <TouchableHighlight onPress={this.show}>
    <Text>
    set
    </Text>
    </TouchableHighlight>
    <TouchableHighlight onPress={this.stop}>
    <Text>
    stop
    </Text>
    </TouchableHighlight>
    <TouchableHighlight onPress={this.start}>
    <Text>
    start
    </Text>
    </TouchableHighlight>
    </View>
    </View>
    );
    },
    });

    var styles = StyleSheet.create({
    container: {
    flex: 1,
    justifyContent: 'center',
    padding: 20,
    },

    });

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

    自问自答小能手

    0


  • Text每秒加一这种事 使用异步的定时器就好了。参见文档:定时器

    在React Native里,所有JavaScript代码都是在一个线程里执行的,要想真正启用多线程,必须编写原生代码,然后在JavaScript中使用对原生代码进行异步调用。

    例如图片解码、网络访问,在RN里都是在另一个线程里完成的。


登录后回复