Как отправить, чтобы выразить от axios - PullRequest
1 голос
/ 16 марта 2019

Я делаю приложение калькулятора и отправляю данные для экспресс-оценки, но получаю ошибку.handleEqual - это метод реагирования на нажатие кнопки равенства, предназначенный для оценки и установки состояния. Я не понимаю ошибку.Чего мне не хватаетСпасибо

createError.js: 17 Uncaught (в обещании) Ошибка: ошибка сети при createError (createError.js: 17) в XMLHttpRequest.handleError (xhr.js: 87)

реагировать

import React, { Component } from "react";
import "./App.css";
import { Button } from "./components/Button";
import { Input } from "./components/Input";
import { ClearButton } from "./components/ClearButton";
import * as math from "mathjs";
import axios from "axios";

class App extends Component {
  constructor(props) {
    super(props);
    this.state = {
      input: ""
    };
  }
  addToInput = val => {
    this.setState({
      input: this.state.input + val
    });
  };
  handleEqual = () => {
    // input: math.eval(this.state.input)
    let num = {
      input: this.state.input
    };

    axios.post("http://localhost:5000/path", num).then(res => {
      if (res.status === 200) {
        console.log(res.data);
        this.setState({
          input: res.data
        });
        console.log("Response:", res.data);
      }
    });
  };

  render() {
    return (
      <div className="app">
        <div className="calc-wrapper">
          <Input input={this.state.input} />{" "}
          <div className="row">
            <Button handleClick={this.addToInput}> 7 </Button>{" "}
            <Button handleClick={this.addToInput}> 8 </Button>{" "}
            <Button handleClick={this.addToInput}> 9 </Button>{" "}
            <Button handleClick={this.addToInput}> /</Button>
          </div>{" "}
          <div className="row">
            <Button handleClick={this.addToInput}> 4 </Button>{" "}
            <Button handleClick={this.addToInput}> 5 </Button>{" "}
            <Button handleClick={this.addToInput}> 6 </Button>{" "}
            <Button handleClick={this.addToInput}> - </Button>{" "}
          </div>{" "}
          <div className="row">
            <Button handleClick={this.addToInput}> 1 </Button>{" "}
            <Button handleClick={this.addToInput}> 2 </Button>{" "}
            <Button handleClick={this.addToInput}> 3 </Button>{" "}
            <Button handleClick={this.addToInput}> + </Button>{" "}
          </div>{" "}
          <div className="row">
            <Button handleClick={this.addToInput}> 0 </Button>{" "}
            <Button handleClick={this.addToInput}> . </Button>{" "}
            <Button handleClick={() => this.handleEqual()}> = </Button>{" "}
          </div>{" "}
          <div className="row">
            <ClearButton
              handleClear={() =>
                this.setState({
                  input: ""
                })
              }
            >
              CE{" "}
            </ClearButton>{" "}
          </div>{" "}
        </div>{" "}
      </div>
    );
  }
}

export default App;

экспресс

app.post("/path", (req, res) => {
  const val = req.body.input;
  console.log(val);

  const calc = mathjs.eval(val);

  res.writeHead(200, {
    "Content-type": "application/json"
  });
  res.end(JSON.stringify(calc));
});

Ответы [ 2 ]

0 голосов
/ 16 марта 2019

если вы хотите получить строковый объект calc, вы должны использовать res.data.calc

0 голосов
/ 16 марта 2019

Согласно официальным документам , res.end () используется для быстрого завершения ответа без каких-либо данных.Если вы хотите вернуть значение клиенту, используйте res.send () .

...