【问题标题】:From a Flux component function, how to access an input's value?从 Flux 组件函数中,如何访问输入的值?
【发布时间】:2015-08-05 19:08:10
【问题描述】:

来自 Flux 新手尝试学习的简单问题...

假设我想在我的 App 组件中定义一个执行此操作的简单函数:

on buttonA.click, send the value of textboxB

我该怎么做,我可以简单地在 testSend 函数中引用来自渲染方法的输入吗?

我查看了this example,但对于我的简单需求来说,它似乎过于复杂。我真的必须为每个我希望最终通过按钮单击发送值的文本框创建另一个组件吗?

这是我的组件:

export default class App extends Component {
    testSend: function( evt ) {
        // Here I want to send the textboxB.value
        //AppActions.add({ name: '...' });

    },

  render: function() {
    return (
        <input type="text" id="textboxB" />
        <button id="buttonA" onClick={ this.testSend }>Send Text</button>
    );
  },
}

【问题讨论】:

  • 你试过了吗?发生了什么?
  • @Mathletics 我不知道我需要使用的语法
  • 您想拥有一个可用于页面上所有文本框的单击功能吗?
  • @HalHelms 不,我想要一个可以绑定到按钮并引用其中的任何输入以发送值的函数
  • 我仍然在这里猜测您想要做什么,但您可以在任何输入上放置ref,然后从您的点击函数中获取其中任何一个的值。这就是你想要的吗?

标签: javascript node.js reactjs flux


【解决方案1】:

我猜 Mathletics 的评论是为了指向解决方案;)

我只能使用简单的 javascript 语法,一次! :D

testSend: function( evt ) {
    alert(document.getElementById('textboxB').value);
    //AppActions.add({ name: '...' });

}

解决方法是正确使用props和state,感谢讨论和帮助!

var App = React.createClass({

    getInitialState: function () {
    return { username: this.props.username };
  },

    changeStateUsername: function( e) {
        //alert(e.target.value);
        this.setState({username: e.target.value});
    },

  render: function() {
    return (
        <input type="text" id="textboxB" value={this.state.username} onChange={this.changeStateUsername} />
        <button id="buttonA" onClick={ this.setNewUsername }>Set</button>
    );
  }
});

【讨论】:

  • 这不是“反应方式”;你真的不应该直接在 React 中处理 DOM。
  • @Mathletics 感谢您的评论,React 方式是什么?为每个文本框创建一个组件作为示例链接,并在每次击键时将每个组件的状态保存在道具中?如果您能提供帮助,我想使用 React 方式! :)
  • 根据@HalHelms 的评论,facebook.github.io/react/docs/more-about-refs.html;此示例涵盖如何操作值以及如何正确引用节点。我不将此作为答案发布的唯一原因是 React 中的“正确”模式似乎正在迅速变化(在此处插入您自己的 flux 双关语),因此答案很可能会出现很快就过时了。
  • @Mathletics:谢谢!通过阅读更多关于它的内容,我相信我应该将状态用于那种事情......对吗?就像将文本框值绑定到控制器类中的状态属性一样
  • 再看我贴的链接; handleChange 方法可以满足您的需求。
猜你喜欢
  • 2017-05-10
  • 2020-06-04
  • 2017-08-05
  • 1970-01-01
  • 2019-10-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多