Headless Task 在 React Native 组件内部使用
Headless Task use inside component with React Native
我正在尝试 运行 使用 headlessjs in 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;
}
我们的想法是简单地从服务中获取数据并将其显示在 UI。
您可以替换:
someTask = require('./SomeTaskName.js');
来自
import SomeTaskName from './SomeTaskName'
解决方案是简单地将代码移动到 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);
我正在尝试 运行 使用 headlessjs in 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;
}
我们的想法是简单地从服务中获取数据并将其显示在 UI。
您可以替换:
someTask = require('./SomeTaskName.js');
来自
import SomeTaskName from './SomeTaskName'
解决方案是简单地将代码移动到 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);