【问题标题】:React Native - Undefined is not an object(evaluating 'item.menu_desc')React Native - 未定义不是对象(评估'item.menu_desc')
【发布时间】:2018-07-25 18:12:56
【问题描述】:

我正在尝试将一些数据发送到我的数据库,但数据也来自我的数据库。通过按下发送按钮,应将显示的项目/数据发送/添加到数据库中。

我尝试使用this.setState({ name: item.menu_desc }),但它给了我这个错误:

这是我的代码

export default class Dishes extends Component {
    constructor(props) {
        super (props)
        this.state = {
            ....
            ....
            name: null,
            menu_price: null,
        }
    }
    submit = ({ item, index }) => {
        this.setState({ name: item.menu_desc });          // my setStates
        this.setState({ menu_price: item.menu_price });
                fetch('http://192.168.***.***:3308/SendOrder/Send', {
                    method: 'POST',
                    headers: {
                        'Accept': 'application/json',
                        'Content-Type': 'application/json'
                    },
                    body: JSON.stringify({
                        ....
                        menu_desc: item.menu_desc,
                        menu_price: item.menu_price,
                    })
                }).then(res => res.json())
                    .then((responseJson) => {
                        Alert.alert(JSON.stringify(responseJson))
                        console.log(responseJson);
                    })
                .catch(error => console.error('Error:', error))
    }
        return (
            <View>
                .....
                <Text>Name: { item.menu_desc }</Text>       // This is name
                <Text>Price: ₱{ item.menu_price }</Text>    // This is price
                <Text>Status: { item.menu_status }</Text>
                .....
                <TouchableOpacity
                onPress = {(item,index) => this.submit(item,index)}>
                    <Text>Send Order</Text>
                </TouchableOpacity>
            </View>
        )
    }
    render() {
        return (
                <FlatList
                    data = {this.state.data}
                    keyExtractor={(item, index) => index.toString()}
                    extraData={this.state}
                    renderItem = {this._renderItem}
                />
            </View>
        )
    }
}

【问题讨论】:

    标签: javascript android reactjs react-native ecmascript-6


    【解决方案1】:

    你打电话给this.submit(item,index)

    其中item 是第一个变量,index 是第二个变量。 但是提交函数试图像这样解构项目对象。

    submit = ({ item, index }) =&gt; {

    删除花括号或将参数作为对象发送。

    【讨论】:

    • 它给出了同样的错误,先生,我的 "menu_desc: item.name" 和 "menu_price: item.menu_price" 呢?你觉得我这样做对吗?
    【解决方案2】:

    错误是告诉你item 是未定义的,因此你不能在它上面调用.menu_desc,因为它不是一个对象。

    TouchableOpacity 中的内联函数应该如下所示:(请注意,匿名内联函数中实际上不需要任何参数)

    <TouchableOpacity
      onPress = {
        () => {
          this.submit(item, index)
        }
      }
    >
    

    由于submit() 接受2 个参数,因此您不需要解构:

    submit = (item, index) => {
      ...
    }
    

    【讨论】:

      【解决方案3】:
      1. 关闭模拟器
      2. 杀死所有 node.exe 进程
      3. 删除 temp 中的所有文件
      4. 删除节点模块
      5. 安装 babel-plugin-transform-flow-strip-types
      6. npm 安装
      7. react-native start --reset-cache
      8. react-native run-android

      【讨论】:

        猜你喜欢
        • 2020-09-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-09-29
        • 2019-04-05
        • 2021-11-09
        • 1970-01-01
        相关资源
        最近更新 更多