React Native отправляет данные на сервер Node.js с помощью fetch - PullRequest
0 голосов
/ 01 июля 2018

Я новичок в React Native и Node.js, поэтому этот вопрос может быть совершенно очевидным. У меня приложение React Native, запущенное из "App.js".

import React from 'react';
import { StyleSheet, Text, View, Button } from 'react-native';

export default class App extends React.Component 
{
  render() 
  {
    return (
      <View style={styles.container}>
        <Button onPress={this.handlePress} title="Press me" />
      </View>
    );
  }

  handlePress() 
  {
    fetch('http://10.222.22.22:3000/',{
      method: 'POST',
      body: JSON.stringify({
        a: 'hello'
      }),
      headers: {"Content-Type": "application/json"}
    })
    .then(function(response){
    return response.json()
    }).catch(error => console.log(error));
  }
}

const styles = StyleSheet.create({
  container: {
    flex: 1,
    backgroundColor: '#fff',
    alignItems: 'center',
    justifyContent: 'center',
  },
});

(Из соображений безопасности мой IP-адрес на самом деле не 10.222.22.22).

У меня также есть сервер Node.js, запущенный из "server.js".

var express = require('express');
var app = express();
const bodyParser = require("body-parser");

app.use(bodyParser.urlencoded({
    extended: true
}));

app.use(bodyParser.json());

// Here is where I'm trying to access and log the value of "a"
app.post('/', function (req, res) {
	console.log(req.body.a);
});

app.listen(3000, function() {
  console.log('Listening on port 3000');
});

Я пытаюсь получить доступ к значению "a" (из тела выборки в handle.ress () App.js) после того, как оно "отправлено" на сервер. Пока что на консоли ничего не отображается, кроме «Прослушивание через порт 3000». Любая помощь будет высоко ценится, спасибо!

1 Ответ

0 голосов
/ 01 июля 2018

Попробуйте объявить ваш handlePress как функцию стрелки.

 handlePress = () => {
    // ... your fetch code
 }
...