【问题标题】:Get initial state of ReactJs button from database从数据库中获取 ReactJs 按钮的初始状态
【发布时间】:2015-07-05 17:12:01
【问题描述】:

我对 ReactJs 很陌生,想知道如何根据 sql 数据库数据设置按钮组件的初始状态? 我通过 php & json 获取数据,它工作正常,但我不知道如何设置状态。 每一个小费都值得赞赏! 谢谢

var OutfitList = React.createClass({
      render: function() {
        var outfitNodes = this.props.data.map(function (data) {
          return (
            <div className="col-xs-12 col-sm-12 col-md-6 col-lg-6 singleOutfit" style={{background: '#e5e5e5'}}>
              <data author={data.author}>
                <img src={data.url}/>
                <div className='row subImage'>
                  <div className='col-xs-4 col-sm-4 col-md-4 col-lg-4'>
                    <div className={data.fav == 1 ? 'isFav btn' : 'btn'}>Click To Fav</div>
                  </div>
                  <div className='col-xs-4 col-sm-4 col-md-4 col-lg-4 text-center'><h4>{data.title}</h4></div>
                  <div className='col-xs-4 col-sm-4 col-md-4 col-lg-4'>{data.tags}</div>
                </div>
              </data>
            </div>
            );
        });

        return (
          <div className="container">
            <div className="row">

              <h3>ALL</h3>

              {outfitNodes}

            </div>
          </div>
        );
      }
    });

    var App = React.createClass({
      loadOutfitsFromServer: function() {
        $.ajax({
          url: this.props.url,
          dataType: 'json',
          cache: false,
          success: function(data) {
            this.setState({data: data});
          }.bind(this),
          error: function(xhr, status, err) {
            console.error(this.props.url, status, err.toString());
          }.bind(this)
        });
      },
      getInitialState: function() {
        return {data: []};
      },
      componentDidMount: function() {
        this.loadOutfitsFromServer();
        setInterval(this.loadOutfitsFromServer, this.props.pollInterval);
      },
      render: function() {
        return (
          <div>
          <OutfitList data={this.props.data} />
          </div>
        );
      }
    });

    React.render(
      <App data={data} pollInterval={2000} />,
      document.getElementById('content')
    );

https://jsfiddle.net/6ss41m50/

【问题讨论】:

  • 我们可以看看一些代码吗?
  • 嘿 @DavidJacquel 我现在添加了一个简短的 jsfiddle。我想要的是单击按钮并通过 json/php onclick 将 1 或 0 保存到数据库中

标签: javascript reactjs


【解决方案1】:

如果您想设置一些初始状态,请使用getInitialState()。您从此方法返回的任何内容都是初始状态,之后可以使用this.state.buttonState 访问并使用this.setState() 进行修改。

假设您的数据库数据作为buttonState 传递给此组件,您可以像这样设置状态:

...
getInitialState: function() {
    return {
        buttonState: this.props.buttonState
    }
}

render: function() {
    return {
       <div><button>this.state.buttonState</button></div>
    }
}
...

但是,对于这样的示例,甚至不要考虑设置任何状态,因为它会创建一个false source of truth。相反,您可以直接在按钮中使用从数据库中传入的数据。

render: function() {
    return {
        <div><button>this.props.buttonState</button></div>
    }   
}

【讨论】:

  • 非常感谢@arhoskins 我现在已经这样做了: 但我的下一个问题是如何将 data.fav 像 onclick 一样提交到我的数据库?并同时按照喜欢的方式渲染它?
猜你喜欢
  • 1970-01-01
  • 2015-05-10
  • 1970-01-01
  • 1970-01-01
  • 2015-06-30
  • 1970-01-01
  • 2019-11-30
  • 2016-04-04
  • 2019-06-22
相关资源
最近更新 更多