React JS reference function in another component
javascript, reactjs
Solution
You could accomplish this by creating a parent component that is responsible for managing the state and then just push the state down to the sub-components as props.
/** @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
Problem
I'm trying to get a button rendered through another component to reference and/or influence the state of a different component. ``` 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> ); } }); ``` I want to write a new component that will be able to access the add function in Inputs. I tried to reference it directly with `Inputs.add` like this: ``` var Add = React.createClass({ render: function(){ return ( <input type="button" className="btn" value="Add an Input" onClick={Inputs.add} /> ); } }); ``` But that didn't work. How would I be able to access a component's functions through another component, or influence the state of a component through another component? Thanks.