加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

react-native – React Native this.’function’不是函数

发布时间:2020-12-15 20:45:55 所属栏目:百科 来源:网络整理
导读:我正在学习React Native和Redux,我在这里遇到了许多类似的问题,但我很难与我的问题联系起来. 当我在另一个方法中调用一个方法时,它会不断地返回我这个函数’不是函数,我真的不知道该怎么做. 这是我的一些代码.. import React,{ Component } from 'react';imp
我正在学习React Native和Redux,我在这里遇到了许多类似的问题,但我很难与我的问题联系起来.

当我在另一个方法中调用一个方法时,它会不断地返回我这个函数’不是函数,我真的不知道该怎么做.

这是我的一些代码..

import React,{ Component } from 'react';
import { Text,StyleSheet,ScrollView } from 'react-native';
import { connect } from 'react-redux';
import Panel from '../components/panel';

class Orders extends Component {
    displayItems(obj) {
        console.log('itemArr',obj);
        return obj.items.map(function(item){
           return (<Text>{item.quantity + ' ' + item.name}</Text>)
        });
    }

    renderContents() {
        console.log('orders',this.props.orders);
        if (!this.props.orders) {
            return <Text>Loading...</Text>;
        }
        return this.props.orders.map(function(order) {  
                return (
                    <Panel title={order.id} key={order.id}>
                        <Text>
                            Item: {this.displayItems(order)}{'n'}

                        </Text>
                    </Panel>
                );
        });
    }

    render() {
        return(
            <ScrollView style={styles.container}>
                {this.renderContents()}
            </ScrollView>
        );
    }
}

我不确定为什么render方法中的函数不会导致任何错误,但我的renderContents方法中的函数调用确实如此.

我很感激任何解决这个问题的建议.

这是一个约束性问题.除非另有明确说明,否则JavaScript中的函数都有自己的上下文,所以当你这样做时
return this.props.orders.map(function(order) {  
  return (
    <Panel title={order.id} key={order.id}>
      <Text>Item: {this.displayItems(order)}{'n'}</Text>
    </Panel>);
});

这不是指向你的类,而是指向函数本身.请执行以下操作

return this.props.orders.map((order) => {  
  return (
    <Panel title={order.id} key={order.id}>
      <Text>Item: {this.displayItems(order)}{'n'}</Text>
    </Panel>);
});

箭头函数没有自己的上下文,所以这应该适合你.您也可以拨打bind,但我认为箭头功能解决方案更简单.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读