单击选项卡上的React -render值

时间:2017-01-10 03:39:14

标签: reactjs

我有一个使用axios的应用程序,并使用我放在标签上的地图呈现值(例如:ID和warehouseName)。现在,我要做的是在warehouseID loadBrandTotal()上从我在地图中获得的值ID发布状态。

到目前为止,我的代码是这样的

export default React.createClass({

    getInitialState(){
        return {
            warehouseName: ""
        }
    },

    componentWillMount(){
        this.loadWarehouse();
        this.loadBrandTotal();
    },


    loadWarehouse(){
        var that = this
        var url = api + 'retrieveWarehouseList';
        axios.post(url,
            {
                warehouseName : 'NONE'
            })
        .then(function (response) {
            console.log(response.data);
            that.setState({
              warehouseList : response.data.retrieveWarehouseListResult
            });
          })
        .catch(function (response) {
          console.log(response);
        });
    },

    loadBrandTotal(){
        var that = this
        var url = api + 'retrieveTotalSalesPerBrand';
        axios.post(url,
            {
                 warehouseID : "None"
            })
        .then(function (response) {
            console.log(response.data);
            that.setState({
              totsalesperbrand : response.data.retrieveTotalSalesPerBrandResult
            });
          })
        .catch(function (response) {
          console.log(response);
        });
    },

    render() {
    var wareName = this.state.warehouseList;
    return (
    	<ul className="tabs tabs-transparent">
	        {wareName.map(function(nameoObjects) {
	          return (
	            <li className="tab">
	                <a href="#test1" value={nameoObjects.ID} key={nameoObjects.ID}>{nameoObjects.warehouseName}</a>
	            </li>
	          )
	        })}
	    </ul>
   	)}

})

提前多多感谢。

1 个答案:

答案 0 :(得分:1)

我不是100%确定你想要做什么,但是你想在loadWare()函数中发布你想要发布的数据吗?如果是这样的话,你什么时候想要发布这个帖子呢?在按钮上单击?

这是一个示例,其中每个列表元素都有一个按钮,用于将元素在map fucntion中获取的ID值发送到loadBrandTotal()函数,并在其中发布(请参阅代码注释以了解更改):

// Give the id as an argument to loadBrandTotal
loadBrandTotal(id){
        var that = this
        var url = api + 'retrieveTotalSalesPerBrand';
        axios.post(url,
            {
                 // Post the ID
                 warehouseID : id
            })
        .then(function (response) {
            console.log(response.data);
            that.setState({
              totsalesperbrand : response.data.retrieveTotalSalesPerBrandResult
            });
          })
        .catch(function (response) {
          console.log(response);
        });
    },

    render() {
    var wareName = this.state.warehouseList;
    return (
        <ul className="tabs tabs-transparent">
            {wareName.map(function(nameoObjects) {
              return (
                <li className="tab">
                    <a href="#test1" value={nameoObjects.ID} key={nameoObjects.ID}>{nameoObjects.warehouseName}</a>
                    // When clicked, this button sends THIS list object's nameoObject ID to the loadBrandTotal function, where it's posted
                    <button onClick{() => this.loadBrandTotal(nameoObjects.ID)}>Post ID</button>
                </li>
              )
            })}
        </ul>
    )}

因此,在该示例中,map函数中呈现的每个列表元素都包含一个按钮,单击该按钮时,会将自己的nameoObject ID发送到loadBrandTotal函数,并在其中发布并设置状态。这是你想要做的事情吗?