سؤال

أحاول الحصول على زر يتم عرضه من خلال مكون آخر للإشارة إلى حالة مكون مختلف و/أو التأثير عليها.

var Inputs = React.createClass({
  getInitialState: function(){
    return {count: 1};
  },
  add: function(){
    this.setState({
      count: this.state.count + 1
    });
  },
  render: function(){
    var items = [];
    var inputs;
      for (var i = 0; i < this.state.count; i++){
        items.push(<input type="text" name={[i]} />);
        items.push(<br />);
      }
    return (
      <div className="col-md-9">
        <form action="/" method="post" name="form1">
          {items}
          <input type="submit" className="btn btn-success" value="Submit Form" />
        </form>
      </div>
     );
   }
 });

أريد أن أكتب مكونًا جديدًا يمكنه الوصول إلى وظيفة الإضافة في المدخلات.حاولت الرجوع إليه مباشرة مع Inputs.add مثله:

var Add = React.createClass({
  render: function(){
    return (
      <input type="button" className="btn" value="Add an Input" onClick={Inputs.add} />
    );
  }
});

لكن هذا لم ينجح.كيف سأتمكن من الوصول إلى وظائف المكون من خلال مكون آخر، أو التأثير على حالة المكون من خلال مكون آخر؟شكرًا.

هل كانت مفيدة؟

المحلول

يمكنك تحقيق ذلك عن طريق إنشاء مكون أصلي مسؤول عن إدارة الحالة ثم دفع الحالة للأسفل إلى المكونات الفرعية كدعائم.

/** @jsx React.DOM */

var Inputs = React.createClass({

    render: function () {
        var items = [];
        var inputs;
        for (var i = 0; i < this.props.count; i++) {
            items.push( <input type="text" name={[i]} />);
            items.push(<br />);
        }
        return ( 
            <div className = "col-md-9"> 
                <form action = "/" method = "post" name = "form1"> 
                    {items} 
                    <input type="submit" className="btn btn-success" value = "Submit Form" />            
                </form>
            </div> 
       );
    }
});

var Add = React.createClass({
    render: function () {
        return (<input type = "button" className="btn" value="Add an Input" onClick={this.props.fnClick}/> );
  }
});

var Parent = React.createClass({
    getInitialState: function(){
        return {count:1}
    },
    addInput: function(){
        var newCount = this.state.count + 1;
        this.setState({count: newCount});
    },
    render: function(){
        return (
            <div>
                <Inputs count={this.state.count}></Inputs>
                <Add fnClick={this.addInput}/>
            </div>
        );
    }
});

React.renderComponent(<Parent></Parent> , document.body);

jsFiddle

نصائح أخرى

يمكنك استدعاء الوظائف على القيمة المرجعة لـ renderComponent:

var Inputs = React.createClass({…});
var myInputs = React.renderComponent(Inputs);
myInputs.add();

الطريقة الوحيدة للحصول على مؤشر لمثيل React Component خارج React هي تخزين القيمة المرجعة لـ React.renderComponent. مصدر.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top