【发布时间】:2025-11-24 19:20:03
【问题描述】:
当我在表单输入上按下回车键时,谁能告诉我如何使用功能组件中的反应路由器重定向到某个路径,我还想将输入的任何内容作为道具传递给组件
也没有提交按钮,只有输入字段
我的代码真的很糟糕,我不认为我知道自己在做什么,但它是:
App.js
import React from 'react';
import ReactDOM from 'react-dom';
import { BrowserRouter as Router, Switch, Route } from 'react-router-dom';
import Index from '../containers/Index';
import User from '../containers/User';
const App = () => {
return (
<Router>
<Switch>
<Route path='/' exact component={Index} />
<Route path='/:user' component={User} />
</Switch>
</Router>
);
};
ReactDOM.render(<App />, document.getElementById('root'));
Index.js
import React, { useState, useEffect } from 'react';
import { withRouter } from 'react-router-dom';
const index = () => {
const [userState, setUserState] = useState(undefined);
useEffect(() => {
setUserState({ user: user });
console.log(userState);
}, []);
let user;
const handleUser = event => {
event.preventDefault();
user = event.target.value;
};
console.log(user);
return (
<div>
<h1>github stats</h1>
<form
onSubmit={e => {
e.preventDefault();
user = e.target.value;
console.log(user);
}}
>
<input type='text'></input>
</form>
</div>
);
};
export default index;
User.js
import React, { useState, useEffect } from 'react';
const axios = require('axios');
const user = props => {
// console.log(props.username);
const [userState, setUserState] = useState({ user: undefined });
const token = 'personal access token';
const query = `
{
user(login: "${props.username}"){
name
login
avatarUrl
repositories(first: 10 orderBy:{
field: STARGAZERS
direction: DESC
}){
edges{
node{
name
}
}
}
}
}`;
useEffect(() => {
fetchUser();
}, []);
const fetchUser = async () => {
let response = await axios.post(
'https://api.github.com/graphql',
{ query: query },
{ headers: { Authorization: `Bearer ${token}` } }
);
let { data } = response.data;
console.log(data);
};
return <div>hello</div>;
};
export default user;
【问题讨论】:
-
你能展示你目前拥有的代码吗?您还问了几个不同的问题:如何在按下回车键时提交表单,如何在功能组件中使用 react 路由器更改 url,如何在另一个组件中使用输入值作为道具。最好将帖子限制在一个特定问题上
-
回答其中一个问题:
useHistory是您要更改功能组件中的 url 路径的内容。 -
听起来很傻,但在你的
-
@BrianThompson 谢谢我在传递给 onSubmit 的函数上使用了 history.push('/user'),然后我被重定向到 /user,我也可以将输入的文本作为道具传递给 user.js ?
标签: javascript reactjs react-router react-hooks react-router-v4