React Native-通过ID更新和删除

时间:2018-09-01 17:52:10

标签: javascript android reactjs react-native fetch

我正在尝试通过点击/单击“更新并删除”按钮来更新删除某些项目(通过 ID )。但是我的问题是,我不确定执行“对ID进行状态(或其他任何操作)获取”的正确方法。

  • 使用这些方法,我有错误。 (例如:undefined不是对象...)
  • 没有这些,我什么都没有。我很清楚这一点,因为我没有提到任何东西。因此,我必须使用 ID 。但是我不知道这种方法。

请帮助,任何事情将不胜感激。 :)

这是我的代码

Settlement.js

export default class Settlement extends Component {
    constructor(props){
    super(props)
        this.state = {
            ...
            deleteOrder: '',
            numOrder: '',
        };
    }

    submit = () => {
        this.state.numOrder = item.order_id;     // here's my fetch with state
        fetch('http://192.168.254.***:****/SendOrder/update' + this.state.numOrder, {
            method: 'PUT',
            headers: {
                'Accept': 'application/json',
                'Content-Type': 'application/json'
            },
            body: JSON.stringify({
                spcl_req: this.state.SplOrder,
                order_quantity: this.state.count,
                order_type: this.state.DineIn,
            })
        }).then(res => res.json())
            .then((responseJson) => {
                Alert.alert(JSON.stringify(responseJson))
                console.log(responseJson);
            })
        .catch(error => console.error('Error:', error))
    }
    delete = () => {
        this.state.deleteOrder = item.order_id;     // here's my fetch with state
        fetch('http://192.168.254.***:****/SendOrder/delete_order/' + this.state.deleteOrder, {
            method: 'DELETE',
            headers: {
                'Accept': 'application/json',
                'Content-Type': 'application/json'
            },
            body: JSON.stringify({
                order_id: this.state.deleteOrder
            })
        }).then((responseData) => {
            Alert.alert(JSON.stringify(responseData))
            console.log(responseData.rows)
        }).done();
    }

    render() {
        const { params } = this.props.navigation.state;
        return (
            <View>
                <FlatList
                ...
                renderItem = {({ item }) =>
                    <View>
                        ....
                        <View>
                            <TouchableOpacity
                                onPress = { () => this.submit() }>
                                <Text>UPDATE</Text>
                            </TouchableOpacity>
                            <TouchableOpacity
                                onPress = { () => this.delete() }>
                                <Text>REMOVE</Text>
                            </TouchableOpacity>
                        </View>
                    </View>
                }/>
            </View>
        )
    }
}[![enter image description here][1]][1]

1 个答案:

答案 0 :(得分:0)

您在React中打破了两个概念。

this.state.numOrder = item.order_id; 此行不会更新您的状态

此行中的项目是什么? renderItem = {({item})=>

也许在这个对象中有一个标识符,该标识符必须作为参数传递给您的函数