[React] React Fundamentals: Owner Ownee Relationship

The owner-ownee relationship is used to designate a parent-child relationship with React components as it differs from the DOM relationship.

When one component renders another component, this is what React refers to as the "owner-ownee relationship," where the parent component is also called a "composite component."

We are going to create a component call 'Widget' which will be used inside our 'React_app' component.

'Widget' doesn't have any state, all it has is from 'React_app' pass into it.

<Widget update={this.myUpdate} name={this.state.name}></Widget>

Example:


<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title>React Lesson 4: Onwer - Ownee</title>
</head>
<body>

<script src="https://cdnjs.cloudflare.com/ajax/libs/react/0.12.2/react.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/0.12.2/JSXTransformer.js"></script>
<script type="text/jsx">

    var React_app = React.createClass({
        getInitialState: function() {
            return {
                name: "Joe"
            }
        },
        myUpdate: function(e){
            this.replaceState({name: e.target.value});
        },
        render: function() {
            return (
                 <div>
                     <Widget update={this.myUpdate} name={this.state.name}></Widget>
                     <Widget update={this.myUpdate} name={this.state.name}></Widget>
                     <Widget update={this.myUpdate} name={this.state.name}></Widget>
                     <Widget update={this.myUpdate} name={this.state.name}></Widget>
                     <Widget update={this.myUpdate} name={this.state.name}></Widget>
                 </div>
            );
        }
    });

    var Widget = React.createClass({
        render: function(){
            return (
                    <div>
                        Your name: <input type="text" onChange={this.props.update}/>
                        <h1>{this.props.name}</h1>
                    </div>
            )
        }
    });

    React.render(<React_app />, document.body);
</script>
</body>
</html>
原文地址:https://www.cnblogs.com/Answer1215/p/4361636.html