2017-04-10 55 views
0

我正在尝试使用headlessjs in react-native来运行后台任务。问题是我无法访问组件内的异步任务,以便在视图上显示它。这是我的默认组件。无头任务与React Native一起使用内部组件

import React, { Component } from 'react'; 

import { 
    AppRegistry, 
    Text, 
    View, 
    NativeModules 
} from 'react-native'; 


module.exports = NativeModules.ToastAndroid; 

someTask = require('./SomeTaskName.js'); 



export default class test2 extends Component { 

    constructor() { 
     super() 
     this.state = { 
     myText: 'My Original Text' 
     } 
    } 
    updateText =() => { 
     this.setState({myText: 'My Changed Text'});s 
    } 

    componentDidMount(){ 
    this.setState({myText: someTask}); 
    someTask.then(function(e){   //<--- error 
     console.log("lala" + e); 
    }); 
    } 
    render() { 
    return (
     <View> 
      <Text> 
       abc 
      </Text> 
     </View> 
    ); 
    } 
} 



AppRegistry.registerComponent('test2',() => test2); 
AppRegistry.registerHeadlessTask('SomeTaskName',() => someTask); 

正如代码中提到的,我得到错误undefined is not a function。我不知道如何做这项工作。我的SomeTaskName.js看起来像这样。

SomeTaskName.js

module.exports = async (taskData) => { 
    return taskData.myname; 
} 

的想法是简单地从服务中获得的数据,并显示在用户界面。

回答

0

的解决方案是简单地移动componentDidMount函数中的代码。这是我实现的方式。

/** 
* Sample React Native App 
* https://github.com/facebook/react-native 
* @flow 
*/ 

import React, { Component } from 'react'; 

import { 
    AppRegistry, 
    Text, 
    View, 
    Image 
} from 'react-native'; 


export default class test2 extends Component { 

    constructor() { 
     super() 
     this.state = { 
     myText: '1' 
     } 
    } 


    componentWillUnmount() { 
    } 
    componentDidMount(){ 
    someTask = async (taskData) => { 
     this.setState({ myText: taskData.myname}); 
    } 
    }; 

    } 
    render() { 

    return (<Text>Working</Text>); 
    } 
} 



AppRegistry.registerHeadlessTask('SomeTaskName',() => someTask); 
AppRegistry.registerComponent('test2',() => test2); 
0

您可以更换:

someTask = require('./SomeTaskName.js'); 

通过

import SomeTaskName from './SomeTaskName' 
+0

跟随该链接:http://stackoverflow.com/questions/42999330 –

+0

我已经收到数据,我可以记录它。问题是在视图中呈现数据。 – Mj1992