Reactjs React Redux应用程序:';道具';未定义';
我正在创建React Redux应用程序。在添加上面的内容Reactjs React Redux应用程序:';道具';未定义';,reactjs,redux,react-redux,redux-form,react-props,Reactjs,Redux,React Redux,Redux Form,React Props,我正在创建React Redux应用程序。在添加上面的内容render()之前,定义了props。然而,在我开始添加上述内容后,应用程序在读取变量时开始出现问题。我不知道发生了什么事 有人能帮我理解为什么props不再被识别吗?我真的很感激 Login.js import React from 'react'; import Modal from 'react-bootstrap/Modal'; import Form from 'react-bootstrap/Form'; import Bu
render()
之前,定义了props
。然而,在我开始添加上述内容后,应用程序在读取变量时开始出现问题。我不知道发生了什么事
有人能帮我理解为什么props
不再被识别吗?我真的很感激
Login.js
import React from 'react';
import Modal from 'react-bootstrap/Modal';
import Form from 'react-bootstrap/Form';
import Button from 'react-bootstrap/Button';
import './login.css';
class LoginForm extends React.Component {
constructor(props) {
super(props);
this.state = {
username: ''
}
this.onChange = this.onChange.bind(this);
}
onChange(e) {
this.setState({ [e.target.name]: e.target.value});
}
render() {
return (
<>
<Modal show={props.modalOpen} onHide={props.handleModalOpen}>
<Modal.Header closeButton>
<Modal.Title>Login</Modal.Title>
</Modal.Header>
<Modal.Body>
<Form>
<Form.Group>
<Form.Label>Username</Form.Label>
<Form.Control
type="text"
name="username"
className="form-control"
/>
</Form.Group>
<Form.Group>
<Form.Label>Password</Form.Label>
<Form.Control
type="text"
name="password"
className="form-control"
/>
</Form.Group>
</Form>
</Modal.Body>
<Modal.Footer>
<Button variant="danger" type="submit" onClick={props.handleModalOpen}>
Submit
</Button>
<Button variant="primary" onClick={props.handleClose}>
Cancel
</Button>
</Modal.Footer>
</Modal>
</>
);
}
}
export default LoginForm;
import React from "react";
import { Link } from 'react-router-dom';
import './navbar.css';
import LoginForm from '../LoginForm/login.js';
// import SignUpModal from '../SignUpModal/signup.js';
class Navbar extends React.Component {
state = {
modalOpen: false
}
handleModalOpen = () => {
this.setState((prevState) => {
return {
modalOpen: !prevState.modalOpen
}
})
}
render() {
return (
<div>
<nav className="navbar navbar-expand-sm navbar-dark px-sm-5">
<div className="container">
<Link to='/'>
<div className="navbar-brand">
<i class="fas fa-globe fa-2x"></i>
</div>
</Link>
<ul className="navbar-nav align-items-right">
<li className="nav-item ml-5">
<a onClick={this.handleModalOpen} className="nav-link">
Login
</a>
</li>
<li className="nav-item ml-5">
<a onClick={this.handleModalOpen} className="nav-link">
Sign Up
</a>
</li>
</ul>
</div>
</nav>
<LoginForm
modalOpen={this.state.modalOpen}
handleModalOpen={this.handleModalOpen}
/>
{/* <SignUpModal
modalOpen={this.state.modalOpen}
handleModalOpen={this.handleModalOpen}
/> */}
</div>
)
}
}
export default Navbar;
从“React”导入React;
从“反应引导/模式”导入模式;
从“react引导/表单”导入表单;
从“反应引导/按钮”导入按钮;
导入“./login.css”;
类LoginForm扩展了React.Component{
建造师(道具){
超级(道具);
此.state={
用户名:“”
}
this.onChange=this.onChange.bind(this);
}
onChange(e){
this.setState({[e.target.name]:e.target.value});
}
render(){
返回(
登录
用户名
暗语
提交
取消
);
}
}
导出默认登录信息;
Navbar.js
import React from 'react';
import Modal from 'react-bootstrap/Modal';
import Form from 'react-bootstrap/Form';
import Button from 'react-bootstrap/Button';
import './login.css';
class LoginForm extends React.Component {
constructor(props) {
super(props);
this.state = {
username: ''
}
this.onChange = this.onChange.bind(this);
}
onChange(e) {
this.setState({ [e.target.name]: e.target.value});
}
render() {
return (
<>
<Modal show={props.modalOpen} onHide={props.handleModalOpen}>
<Modal.Header closeButton>
<Modal.Title>Login</Modal.Title>
</Modal.Header>
<Modal.Body>
<Form>
<Form.Group>
<Form.Label>Username</Form.Label>
<Form.Control
type="text"
name="username"
className="form-control"
/>
</Form.Group>
<Form.Group>
<Form.Label>Password</Form.Label>
<Form.Control
type="text"
name="password"
className="form-control"
/>
</Form.Group>
</Form>
</Modal.Body>
<Modal.Footer>
<Button variant="danger" type="submit" onClick={props.handleModalOpen}>
Submit
</Button>
<Button variant="primary" onClick={props.handleClose}>
Cancel
</Button>
</Modal.Footer>
</Modal>
</>
);
}
}
export default LoginForm;
import React from "react";
import { Link } from 'react-router-dom';
import './navbar.css';
import LoginForm from '../LoginForm/login.js';
// import SignUpModal from '../SignUpModal/signup.js';
class Navbar extends React.Component {
state = {
modalOpen: false
}
handleModalOpen = () => {
this.setState((prevState) => {
return {
modalOpen: !prevState.modalOpen
}
})
}
render() {
return (
<div>
<nav className="navbar navbar-expand-sm navbar-dark px-sm-5">
<div className="container">
<Link to='/'>
<div className="navbar-brand">
<i class="fas fa-globe fa-2x"></i>
</div>
</Link>
<ul className="navbar-nav align-items-right">
<li className="nav-item ml-5">
<a onClick={this.handleModalOpen} className="nav-link">
Login
</a>
</li>
<li className="nav-item ml-5">
<a onClick={this.handleModalOpen} className="nav-link">
Sign Up
</a>
</li>
</ul>
</div>
</nav>
<LoginForm
modalOpen={this.state.modalOpen}
handleModalOpen={this.handleModalOpen}
/>
{/* <SignUpModal
modalOpen={this.state.modalOpen}
handleModalOpen={this.handleModalOpen}
/> */}
</div>
)
}
}
export default Navbar;
从“React”导入React;
从'react router dom'导入{Link};
导入“/navbar.css”;
从“../LoginForm/login.js”导入LoginForm;
//从“../SignUpModal/signup.js”导入SignUpModal;
类Navbar扩展了React.Component{
状态={
莫达洛彭:错
}
手足龙=()=>{
this.setState((prevState)=>{
返回{
modalOpen:!prevState.modalOpen
}
})
}
render(){
返回(
-
登录
-
注册
{/* */}
)
}
}
导出默认导航栏;
在您的Login.js
中,它是使用基于类的语法编写的,因此它必须是this.props
而不是props
或者,可以将Login.js
重写为基于功能的组件
,然后您可以像下面那样使用道具
const Login=props=>{
返回(
)
}
很清楚,在构造函数中,它是props
参数,所以它是可以的。在班上其他任何地方,这个答案都是正确的@艾萨克哇,真不敢相信我错过了。非常感谢@EmileBergeron:因此,我提供了抛出错误的Modal
的确切行,以及另一个基于函数的示例component@GalaXee95:很乐意帮忙,如果它正确回答了您的问题,请将其标记为答案:)是的,正如我所说的,您是对的(投票结果也较高);)如果您想要一个具有状态的函数组件,那么现在还有钩子。