【问题标题】:how can i get the value of the clicked row in the handle button如何获取句柄按钮中单击的行的值
【发布时间】:2020-09-11 10:02:29
【问题描述】:

您不需要查看链接和表格以外的其他组件

import React, { Fragment } from "react";
import { connect } from "react-redux";
import { TradeStateData, loadTradeStateDataSocket } from "../../actions";
import io from "socket.io-client";
import { Menu , Button} from "semantic-ui-react";
import { Link } from "react-router-dom";
import AddModal from './AddModal';
import { ButtonToolbar } from "react-bootstrap";
// import App from "./app";

let columns = [
  "ClientID",
  "Algo",
  "STOPER",
  "Start/Stop Status",
  "LossLimit",
  "Quantity_Multiple",
  "Trade Limit Per Day",
  "Quantity Limit Per Trade",
  "Lot Size",
  "Slice Size",
  "Wait Time",
  "Trade Limit Per Second",
];
let socket;
// let status;
// let buy_sell_flag;
// let cancelrejectreason_flag;

class TradeState extends React.Component {
  constructor(props) {
    super(props);
    this.state={
      showModal:false
    }
    this.handlebutton = this.handlebutton.bind(this);
    const { dispatch } = this.props;
    //    console.log(dispatch)
    // console.log(this.props)
    //socket = io.connect("http://192.168.0.103:5009");
    socket = io.connect("http://192.168.43.179:5009");
    dispatch(loadTradeStateDataSocket(socket));

    socket.on("TradeStateToggler_data", (res) => {
      dispatch(TradeStateData(res));
    });
  }

  handlebutton = (algoname,clientid) => {
    fetch("http://127.0.0.1:5000/updatetable", {
      method: "POST",
      headers: {
        "Content-type": "application/json",
      },
      body: JSON.stringify({"algoname":algoname,"clientid":clientid}),

    })
    this.setState({showModal:false})
    console.log("heyaaakomalu", {"algoname":algoname,"clientid":clientid});

  };



  toggle=()=>{
    this.setState({showModal:true})
  }




  // componentWillUnmount() {
  //     socket.disconnect()
  //     console.log('Socket Disconnected')
  // }

  render() {
    let closeModal=()=>this.setState({showModal:false})
    // console.log(this.props)
    return (
      <Fragment>
        <Menu style={{ margin: 0 }}>
          <a href="tradestatetoggler">
            <Menu.Item active={true}>ALL</Menu.Item>
          </a>
          <Link to="/d18138status">
            <Menu.Item>D18138</Menu.Item>
          </Link>
          <Link to="/d7730001status">
            <Menu.Item>D7730001</Menu.Item>
          </Link>

          <Link to="/d7730003status">
            <Menu.Item>D7730003</Menu.Item>
          </Link>
          <Link to="/d7730004status">
            <Menu.Item>D7730004</Menu.Item>
          </Link>
          <Link to="/d7730005status">
            <Menu.Item>D7730005</Menu.Item>
          </Link>
          <Link to="/d7730006status">
            <Menu.Item>D7730006</Menu.Item>
          </Link>
          <Link to="/d7730007status">
            <Menu.Item>D7730007</Menu.Item>
          </Link>
          <Link to="/d7730008status">
            <Menu.Item>D7730008</Menu.Item>
          </Link>
          <Link to="/d7730009status">
            <Menu.Item>D7730009</Menu.Item>
          </Link>
          <Link to="/d8460002status">
            <Menu.Item>D8460002</Menu.Item>
          </Link>
          <Link to="/d8460003status">
            <Menu.Item>D8460003</Menu.Item>
          </Link>
          <Link to="/V7410004status">
            <Menu.Item>V7410004</Menu.Item>
          </Link>
        </Menu>

**你可以从这里开始观看**

        <table className="ui celled table">
          <thead>
            <tr>
              {columns.map((col) => (
                <th key={col}>{col}</th>
              ))}
            </tr>
          </thead>
          <tbody>
            {this.props.data.map((row) => {
              // console.log(this.props.data);
              // if (row.buy_sell === "BUY") buy_sell_flag = "positive";
              // else buy_sell_flag = "negative";

              // if (row.cancelrejectreason !== "")
              //   cancelrejectreason_flag = "negative";
              // else cancelrejectreason_flag = "";

              if (row.Start_Stop !== "STOP")
                return (
                  <tr key={row._id}>
                    <td>{row.ClientID}</td>
                    <td>{row.algoname}</td>   
                    <td>
                      <Button color="red" onClick={this.toggle}>STOP </Button>  
                      <AddModal
                        show={this.state.showModal}
                        onHide={closeModal}
                        sendAll={()=>this.handlebutton(row.algoname,row.ClientID)}/> 

**在此模式中,我想要的值是单击行的值,但我得到的是最后呈现的行的值**

                    </td>
                    <td>{row.Start_Stop}</td>
                    <td>{row.losslimit}</td>
                    <td>{row.quantity_multiple}</td>
                    <td>{row.TradeLimitPerDay}</td>
                    <td>{row.QuantityLimitPerTrade}</td>
                    <td>{row.lotSize}</td>
                    <td>{row.sliceSize}</td>
                    <td>{row.waitTime}</td>
                    <td>{row.tradeLimitPerSecond}</td>
                  </tr>
                );
              return null;
            })}
          </tbody>
        </table>
      </Fragment>
    );
  }
}

const MapStateToProps = (state) => {
  // console.log(state);
  let sortedstate = state.TradeState;
  const sorted = {
    data: sortedstate.sort((a, b) => b.ClientID.localeCompare(a.ClientID)),
  };
  return sorted;
};

export default connect(MapStateToProps)(TradeState);

如何获取当前行的值而不是最后渲染的行 addmodal 只包含一个普通的模态。请帮帮我。

【问题讨论】:

    标签: reactjs react-native react-redux render react-table


    【解决方案1】:

    你需要做的是这样的事情。我不知道您的数据项是否具有每个项目的唯一 ID。这是一种你可以做到的方式

    当您 .map 处理您的数据时,您应该始终将 key 属性添加到呈现类似内容的第一个组件

    data.map((row) => {
      return <div key={row._id}>{row._id}</div>
    })

    然后你应该做的是像这样将数据传递给你的AddModal 组件。

    &lt;AddModal data={data[index]} /&gt;

    这样你的模态将只获取用户点击的数据。

    【讨论】:

      猜你喜欢
      • 2020-04-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多