当前位置: 首页 > 知识库问答 >
问题:

反应-将变量传递给另一个组件[重复]

酆阳煦
2023-03-14

我有一个父子关系的组件,我试图设置。我想让父级保留事务(React组件)的原始状态的知识,然后根据新事务是否小于原始金额来确定是否允许添加新事务。我不知道如何在单击调用时正确地将数据从一个组件传递到另一个组件。下面列出了我的原始组件。请发送帮助!

"'

    var transaction = React.createClass({
      getInitialState: function(){
        return {
          transactions: [ { desc: '', val: 0 } ],
          initialTransaction: 10
        }
      },
      render: function(){
        return (
          <div>
           { this.state.transactions.map(this.renderChild) }
            <button onClick={ this.newTransaction }>Add</button>
          </div>
        )
      },
      shouldComponentUpdate: function(nextProps, nextState) {
        console.log(nextState.transactions);
        return nextState.transactions.reduce(function(a, b) {
          return { val: a.val + b.val}
        }) == this.state.initialTransaction
      },
      newTransaction: function(_transaction,x,y){
        this.state.transactions.push(_transaction);

        this.setState({
          transactions: this.state.transactions
        });
        this.forceUpdate();
      },
      renderChild: function(_transaction){
        return (
          <div>
          <input type='text' defaultValue={ _transaction.desc } />
          <input type='text' defaultValue={ _transaction.val }/>
          // TODO: this button should pass a transaction up to the parent component
          </div>
        );
      }
    });
   React.renderComponent(<transaction />, document.getElementById('mount-point'));

"'

共有1个答案

贺高飞
2023-03-14

您可以传递回调。

在父项中:

onTransaction: function(transaction) {
  console.log('onTransaction', transaction);
}

并将其传递给子元素

<Transaction onTransaction={this.onTransaction} ... />

在子级中,您可以通过this.props.onTransaction调用此方法:

renderChild: function(_transaction) {
  ...
  <button onClick={() => this.props.onTransaction(_transaction)} />
 类似资料:
  • 问题内容: 我想将一个类变量传递给另一个类,并使其成为该类的类变量。在以下情况下我该怎么做? 问题答案: 很难理解您正在问的问题,但这是一个可能的答案: 使B类成为A的子类: 如果重新声明为,则会出现一种情况,其中存在一个可以称为或的属性。(或在任一或刚刚…甚至作为或地方,并有类型和分别。) 如果您无法在和(或,以及一些包含声明的第三类)之间创建直接或子类型关系,那么您很不走运。他们无法共享声明。

  • 我有这样的代码。 @RequestMapping(Value=“/Persons”,Method=RequestMethod.Post)public@ResponseBody String addUser(@RequestParam String name){ 谢谢...

  • 问题内容: 我刚开始使用快速语言,并且知道这个问题是重复的。我发现了几个类似的问题和答案,但我无法弄清这个问题。 我想将ScandString变量的值从ScanViewController传递给ResultViewController。 ScanViewcontroller如下: ResultViewController如下: println(detectedString)没有给我任何结果。问题是

  • 我是一个非程序员,有非常少的代码接触,但我想修改一个现有的代码库。我大大简化了下面的代码。请让我知道,如果我可以提供任何进一步的信息或如果这是没有意义的所有!Vocab很难。:) ClassD:

  • 我调用test.sh从PHP使用shell_exec方法。 然而,命令行脚本说它只收到一个参数: /tmp/my_script.php 当我将呼叫更改为: 代码: 它说它收到了3个参数,但是argv[1]和argv[2]是空的。 当我将呼叫更改为: 代码: 脚本最终按预期接收所有3个参数。 您是否总是必须随脚本发送仅引用的文本,并且不允许发送$var之类的变量?或者你有没有什么特殊的方式发送$va

  • 我试图找出如何通知另一个组件状态更改。假设我有3个组件——pp.jsx、Header.jsx和SidebarPush.jsx我只是想用onclicka切换一个类。 因此,标题。jsx文件将有2个按钮,点击时将切换状态为真或假。另外两个组件是应用程序。jsx和Header。jsx需要了解这些状态的变化,以便在这些状态发生变化时可以切换类。