ReactJS渲染第二个组件

时间:2018-06-18 10:32:20

标签: javascript reactjs

我有一段React的代码段,它在div元素root上呈现

class Body extends React.Component {
    constructor(props) {
       super(props);
       this.state = { 
           data : [],
        }
    }

    componentDidMount(){
     this.postdata()
    }

    postdata(){
        var initial_data = {'id': 1, 'model-name': 'Joke'}
        var self = this;
        fetch("\start-jokes\/", {
            body: JSON.stringify(initial_data),
            cache: 'no-cache', 
            credentials: 'same-origin', 
            headers: {
            'user-agent': 'Mozilla/4.0 MDN Example',
            'content-type': 'application/json'
            },
            method: 'POST',
            mode: 'cors', 
            redirect: 'follow',
            referrer: 'no-referrer',
            })
            .then(response => response.json()).then((json) => { console.log( json )
              self.setState({ data : json['jokes'] }) 
        })
    }

    render(){
       return( 
            <div>
            {this.state.data.length == 0 && 
               <div> No options available.</div>
            }
            {this.state.data.length > 0 && 
              <div className="container" id="jokes">
                   {this.state.data.map(function(item,i){
                          return(
                                <div key={item['key']} className="card col-md-7">
                                    <div className="card-body">
                                        {item['text']} 
                                    <p><span className="badge badge-secondary">{item.name}</span></p>
                                    </div>
                                </div>
                      )
                   })}
               </div>
            }
          </div>
         )
    }
}
// ========================================

ReactDOM.render(
  <Body />,
  document.getElementById('root')
);

的HTML

<div id="root" class="top-padding">
</div>

我还想更新另一个响应元素,该元素应该跟踪笑话类型和最后使用的ID(从服务器发回),以便下次调用它可以从那里继续。它在开始时用1初始化。

额外的React Code

class SideNav extends React.Component {
    constructor(props) {
       super(props);
       this.state = { 
           joke_id : 1,
           dadjoke_id: 1,
           tweet_id: 1
        }
    }
}

应该链接到这个html元素

<div id="side-nav">
  <div class="btn-group btn-group-toggle" data-toggle="buttons">
    <label class="btn btn-secondary active">
      <input type="radio" name="options" id="option1" autocomplete="off" value="Joke" ref_id="{joke_id}" checked> Joke
    </label>
    <label class="btn btn-secondary">
      <input type="radio" name="options" id="option2" autocomplete="off" value="DadJokes" ref_id="{dadjoke_id}"> DadJokes
    </label>
    <label class="btn btn-secondary">
      <input type="radio" name="options" id="option3" autocomplete="off" value="Tweet" ref_id="{tweet_id}"> Tweet
    </label>
  </div>
  <div class="col-md-12 top-padding" align="center">
    <span class="oi oi-reload"></span>
  </div>
</div>

其中每个单选按钮都有一个属性ref_id,该属性应与构造函数中的一个初始值匹配。 任何有关如何统一使用这两者的帮助将不胜感激。

0 个答案:

没有答案