ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

javascript-从输入中获取价值并在按钮上使用

2019-11-19 17:34:38  阅读:182  来源: 互联网

标签:reactjs javascript


我正在使用输入元素和按钮元素创建组件.
例如,我需要获取输入值并与按钮一起使用.我怎样才能做到这一点?
这是我的代码:

var InputSearch = React.createClass({
  getInitialState: function() {
    return {
      value: 'pics'
    }
  },

  handleChange: function() {
    this.setState({
      value: event.target.value
    });
  },

  render: function() {
    return (
      <input type="text" value={this.state.value} onChange={this.handleChange} />
    )
  }
});


var ButtonSearch = React.createClass({
  handleClick: function(event) {
    console.log(this.state.value); // here's go the input value
  },

  render: function() {
    return (
      <button onClick={this.handleClick}>GO! </button>
    )
  }
});

var Search = React.createClass({
  render: function() {
    return (
      <div>
        <InputSearch />
        <ButtonSearch />
      </div>
    )
  }
});

React.render(
  <Search />,
  document.getElementById('result')
);

解决方法:

这里的一个问题是您违反了一个好的规则-分离智能组件和哑组件. https://medium.com/@dan_abramov/smart-and-dumb-components-7ca2f9a7c7d0

做到这一点的方法是拥有一个父组件,该组件拥有子组件的所有状态和功能,并将所有这些作为道具传递下来.

//Our smart parent
var SearchContainer = React.createClass({
    getInitialState : function() {
        return {
            value : 'pics'
        }
    },

    handleInput : function(event) {
        this.setState({value: event.target.value});
    },

    render : function() {
        return (
            <div>
                <InputSearch value={this.state.value} onChange={this.handleInput} />
                <ButtonSearch value={this.state.value} />
            </div>
        )
    }
});

//Our dumb children
var InputSearch = React.createClass({
    propTypes : {
        onChange : React.PropTypes.func.isRequired,
        value    : React.PropTypes.string
    },

    render : function() {
        return (
            <input type="text" value={this.props.value} onChange={this.props.onChange} />
        )
    }
});


var ButtonSearch = React.createClass({
    propTypes : {
        value : React.PropTypes.string
    },

    handleClick : function() {
        console.log(this.props.value); //log value
    },

    render : function() {
        return (
            <button onClick={this.handleClick}>GO! </button>
        )
    }
});

React.render(<Search />, document.getElementById('result'));

在这里,我们将处理函数从父级传递到子级,因此输入并不关心更改时触发的事件发生什么,它只需要知道它有一个名为onChange的道具即该函数就可以调用它.

父级(SearchContainer)处理所有这些功能,并将更改后的状态向下传递给按钮和输入.

希望能有所帮助

标签:reactjs,javascript
来源: https://codeday.me/bug/20191119/2038003.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有