【发布时间】:2020-06-22 13:39:55
【问题描述】:
这是我的应用程序组件,它呈现一个输入供用户输入。我想要实现的是,用户输入的任何输入都将传递给Films 组件。然后该文本将用作查询参数以从 api 端点获取数据
import React, { useState } from "react";
import Films from "../Films";
import { BrowserRouter as Router, Route } from "react-router-dom";
import "./style.css";
const App = () => {
const [text, setText] = useState("");
const [redirect, setRedirect] = useState(false);
const onSubmit = (event) => {
setRedirect(true);
};
return (
<Router>
<div>
<p className="films-analysis-service">Films Analysis Service </p>
<form id="input-form" onSubmit={onSubmit}>
<input
type="text"
id="input-box"
value={text}
onChange={(e) => setText(e.target.value)}
/>
<button className="button" type="submit">
Search
</button>
</form>
{redirect && (
<Route
exact
path="/films"
render={(props) => <Films text={text} />}
/>
)}
</div>
</Router>
);
};
export default App;
这是我的电影组件:
import React, { useEffect, useState } from "react";
import "./style.css";
const axios = require("axios");
const Films = ({ text }) => {
const [movies, setMovies] = useState([]);
const fetchMoviesByDirectorName = () => {
let config = {
headers: { Authorization: apiKey },
params: {
directorName: text, //the text that is passed down from App component
},
};
axios.get(filmsEndpointURL, config);
};
useEffect(() => {
fetchMoviesByDirectorName();
}, [movies]);
return (
...
);
};
export default Films;
目前我只是试图打印出我会返回的数据,但不幸的是我认为我的输入值没有正确传递。我不认为我对Route 的使用是正确的......而且它没有重定向到/films 组件。我应该对我的 App.js 做哪些更改?
【问题讨论】:
-
我猜你可以在
input上使用onChange并在那里捕获event.target.value,而不是在表单的onSubmit事件中。良好的调试选项是将console.log(event.target.value)行添加到onSubmit中,您将看到该值不是您要查找的值 - 很可能。 -
我已经编辑了我的帖子,对输入 onChange 的 onSubmit 和 setText 进行了更改。我想我的问题是它没有重定向到以文本为道具的电影组件
标签: javascript reactjs react-router-dom