简体   繁体   English

在 React.js 中如何将表单的值从一个组件传递到另一个组件

[英]In React.js How to pass values of form from one component to another component

In my EMI calculator application using react.js , i have form in one component called Home.js when user enter the form values and click calculate emi,在我使用 react.js 的 EMI 计算器应用程序中,当用户输入表单值并单击计算 emi 时,我在一个名为 Home.js 的组件中创建了表单,

I like to pass the form values to another component called PromptContainers where it will be evaluated and EMI will be calculated and displayed.我喜欢将表单值传递给另一个名为 PromptContainers 的组件,在那里将对其进行评估并计算和显示 EMI。

for easy reading full source code is in https://github.com/sudanvellakovilkanakavel/multicomponent-EMIapp为方便阅读完整的源代码在https://github.com/sudanvellakovilkanakavel/multicomponent-EMIapp

my Home.js我的 Home.js

   var React = require('react');
 var ReactRouter = require('react-router');
var Link = ReactRouter.Link;

var divStyle = {
  background: "#D9EDF7"


}; 

var Home = React.createClass({
render: function()
{

return(

<div className= "jumbotron col-sm-6 col-sm-offset-3 text-center" style={divStyle} > 
             <form name="myForm" onSubmit= {'../containers/PromptContainer.js'} method="post">



           <div class="form-group">
            <label>Choose a bank  :</label>
              <div class="col-sm-6">
            <select>
  <option value="">Canadian Imperial Bank of Commerce</option>
  <option value="">Bank of Montreal</option>
  <option value="">Laurentian Bank of Canada</option>
  <option value="">National Bank of Canada</option>
</select>
</div>
</div>
           <br />
           <div class="form-group">
            <label>Choose a Gender :</label>
              <div class="col-sm-6">
              <select>
  <option value="">Male</option>
  <option value="">Female</option>
  <option value="">Other</option>

</select>
</div>
</div>
<br />
             <div class="form-group">
            <label>Choose a loan type  :</label>
             <div class="col-sm-6">
            <select>
  <option value="">Personal</option>
  <option value="">Housiing</option>
  <option value="">Vechile</option>
  <option value="">Business</option>
</select>
</div>
</div>
           <br />

               <div class="form-group">
            <label>Enter the current age :</label> 
            <div class="col-sm-6">  
            <input type="number" class="form-control" name="age" placeholder="eg. 25" />
         </div>
         </div>
           <br />
           <div class="form-group">
            <label>Enter monthly income in $:</label> 
            <div class="col-sm-6"> 
            <input type="number" class="form-control" name="income" placeholder="eg. 30000" />
            </div>
            </div>
              <br />
         <div class="form-group">
            <label>Enter loan amount in $:</label> 
            <div class="col-sm-6"> 
            <input type="number" class="form-control" name="loan" placeholder="eg. 1000000" />
            </div>
            </div>
              <br />
             <div class="form-group">
            <label>Enter  interest rate in % : </label>
             <div class="col-sm-6"> 
            <input type="text" class="form-control" name="rate" placeholder="eg. 10.5" />
            </div>
            </div>
             <br />
           <div class="form-group">
            <label>Enter duration in months : </label>
            <div class="col-sm-6"> 
            <input type="number" class="form-control" name="months" placeholder="eg. 48" />
           </div>
            </div>
            <br />
              <br />
              <br />
              <div className="form-group col-sm-4 col-sm-offset-4">
              <Link to='../containers/PromptContainer.js'>

            <button className="btn btn-block btn-success"type="submit">CALCULATE</button>

            </Link>
</div>
<br />
              <br />
              <br />

            </form>

            </div>

    )

}

});

module.exports = Home;

My PromptContainer.js code is as follows我的 PromptContainer.js 代码如下

var React = require('react');
var ReactDOM = require('react-dom');


var PromptContainer = React.createClass({

    render: function () {

      return (

       <div className= "jumbotron col-sm-6 col-sm-offset-3 text-center">       


calInterestandvalidation: function() {


if( document.myForm.age.value == "" )
         {
            alert( "Please provide your age!" );
            document.myForm.age.focus() ;
            return false;
         }
 if( document.myForm.income.value == "" )
         {
            alert( "Please provide your income!" );
            document.myForm.income.focus() ;
            return false;
         }
  if( document.myForm.loan.value == "" )
         {
            alert( "Please provide your loan!" );
            document.myForm.loan.focus() ;
            return false;
         }

  if( document.myForm.rate.value == "" )
         {
            alert( "Please provide your rate!" );
            document.myForm.rate.focus() ;
            return false;
         }
  if( document.myForm.months.value == "" )
         {
            alert( "Please provide your months!" );
            document.myForm.months.focus() ;
            return false;
         }

  if(


    document.myForm.age.value != "" && 
    document.myForm.income.value != "" && 
    document.myForm.loan.value != "" &&
    document.myForm.rate.value != "" &&
    document.myForm.months.value != ""

    )
         {


            var loanterm = document.myForm.months.value;
            var roicomb;  //rate of interest calculated on monthly basis

            var emi;
            var principle = document.myForm.loan.value;
            var rannualinterest = document.myForm.rate.value ;




           roicomb = rannualinterest/12/100;

           emi=principle*roicomb *(1+roicomb )^loanterm/((1+roicomb )^loanterm-1);
           alert(emi);
           return true;

          }

return( true );
},



        )



}



});  

        </div>




module.exports = PromptContainer;

Main.js主程序

var React = require('react');
var ReactRouter = require('react-router');

var divStyle = {
  background: "#F5F5DC"

}; 

var Main = React.createClass({


  render: function () {

     return (
              <div className= "jumbotron col-sm-6 col-sm-offset-3 text-center" style={divStyle} > 

            <h2><font color="orange">CHOOSE YOUR LOAN WISELY </font></h2>
           <h4>An React  App For Calculating Your Monthly Loan Interest in Different Canadian Banks</h4>
           <br /> <br />

           {this.props.children}
           </div>

            )
                     }


  });

module.exports = Main;

route.js路由.js

var React = require('react');
var ReactRouter = require('react-router');
var Router = ReactRouter.Router;
var Route = ReactRouter.Route;
var IndexRoute = ReactRouter.IndexRoute;
var hasHistory = ReactRouter.hasHistory;
var  Main = require ('../components/Main');
var  Home = require ('../components/Home');
var  PromptContainer = require ('../containers/PromptContainer');


var routes = (

<Router history={hasHistory}>

<Route path='/'  component= {Main} >

   <IndexRoute component={Home}  />
   <Route path='result' component={PromptContainer} />


</Route>
</Router>


);


module.exports = routes;

Just go through React docs只需浏览 React 文档

For communication between two components that don't have a parent-child relationship, you can set up your own global event system.对于没有父子关系的两个组件之间的通信,您可以设置自己的全局事件系统。 Subscribe to events in componentDidMount(), unsubscribe in componentWillUnmount(), and call setState() when you receive an event.在 componentDidMount() 中订阅事件,在 componentWillUnmount() 中取消订阅,并在收到事件时调用 setState()。 Flux pattern is one of the possible ways to arrange this.通量模式是一种可能的安排方式。

Suorce: https://facebook.github.io/react/tips/communicate-between-components.html来源: https : //facebook.github.io/react/tips/communicate-between-components.html

For help around setting up event system you can check https://gist.github.com/minwe/14a62f0eb5e865fef078有关设置事件系统的帮助,您可以查看https://gist.github.com/minwe/14a62f0eb5e865fef078

Or simply check Flux as it naturally goes with React或者简单地检查Flux,因为它与 React 自然相配

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 如何在 React.JS 中将数据从一个组件传递到另一个组件 - How to pass data from one component to another in React.JS 如何在 React.js 中使用 onClick() 事件将道具从一个组件传递到另一个组件 - How to pass props from one Component to another component with onClick() event in React.js 如何在 React.js 中将 useState 值从一个组件传递到另一个组件 - How to pass useState Value from One Component to another one in React.js 我如何使用带有 redux 和 react.js 的按钮将数据从一个组件传递到另一个组件? - How can i pass the data from one Component to another using a button with redux and react.js? 如何在 React.js 中将状态/数据从一个组件传递到另一个组件(特别是 riot api) - How to pass state/data from one component to another in React.js (riot api specifically) 如何将值从组件内的常量变量传递到 React.js 中的另一个组件 - How to pass value from a constant variable inside a component to another component in React.js 当我按下按钮时如何将数据从一个组件发送到另一个组件。 React.js - how to send the data from one component to another component when i press a button. React.js 如何将项目 ID 传递给 react.js 中的另一个组件 - how to pass Project ID to another component in react.js React.js:将一个组件包装到另一个组件中 - React.js: Wrapping one component into another 将 React.js 中的 function 从一个 function 组件传递到另一个组件 - Passing function in React.js from one function component to another
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM