ReactJS 子元素在 1 个组件中操作子元素

Yuhao

我是这里的 React 新手,使用 Jquery 已经很长时间了。所以不能习惯 React/Redux 风格。

我一直坚持使用子元素尝试处理另一个子元素功能一段时间。

{this.state.stocks.map(function(data, index) {

    return (
        <div className={"list-group-item list-group-item-action flex-column align-items-start"} key={index}>

          <div className={"d-flex w-100 justify-content-between"} onClick={this.handleToggle}>
            <h5 className="mb-1">
                <span className={styles.symbolTitle}>Stock Symbol:</span> <span className={styles.symbolName}>{data.symbol}</span> ${data.price}&nbsp;&nbsp;
                <button type="button" className={"btn btn-outline-primary btn-sm "+ styles.btnTrans +""} >more...</button>
            </h5>
            <small>
              {this.state.shares}&nbsp;
              <span className={styles.colorGrey}>shares</span>&nbsp;&nbsp;&nbsp;&nbsp;
              <button type="button" className={"btn btn-outline-success btn-sm "+ styles.btnTrans +""} onClick={this.handleBuy}>Buy</button>&nbsp;&nbsp;
              <button type="button" className={"btn btn-outline-danger btn-sm "+ styles.btnTrans +""} onClick={this.handleSell}>Sell</button>
            </small>
          </div>

          <div className={stateStyle}>
              <small>Open Price: {data.open}</small>&nbsp;
              <small>Highest Price: {data.high}</small>&nbsp;
              <small>Lowest Price: {data.low}</small>&nbsp;
              <small>All Price: {(data.low + data.high).toFixed(2)}</small>&nbsp;
              <small>Volume: {data.volume}</small>&nbsp;
              <small>Average Volume: {data.average_volume}</small>&nbsp;
              <small>Volatility: {data.volatility}</small>
          </div>

        </div>
     )
}.bind(this))}

就像我上面附加的那样,它是一系列 div 循环。我正在尝试简单地切换具有 onClick 功能的 div 上的同级 div。但是,到目前为止,我得到的是函数 handleToggle 将切换在 map 函数下生成的所有 div。切换功能如下:

 handleToggle: function() {
    if (this.state.active) {
      this.setState({
        active: false
      })
    } else {
      this.setState({
        active: true
      })
    }
  },

不知道下一步该怎么做。大家能给我一些见解吗?

洛尔森克

handleRowToggle(key)将切换与该key相关的所有对象

handleButtonBuy(key)将增加buyCount存储在 state 中的键值

const data = [
        { id: 1, title : 'test1', value1: 'value11', value2: 'value21', buyCount: 0},
        { id: 2, title : 'test2', value1: 'value21', value2: 'value22', buyCount: 5},
        { id: 3, title : 'test3', value1: 'value31', value2: 'value32', buyCount: 10}
];

class App extends React.Component {
  constructor(props) {
    super(props);
    
    this.state = {
      stocks: data
    }
  }

  handleRowToggle(key) {
    var allKeyRecords = document.querySelectorAll(`[data-toggle="${key}"]`);
    allKeyRecords.forEach(record => record.classList.toggle('hide'))
  }
  
  handleButtonBuy(key) {
    this.setState(function(prevState, props) {
      const stocks = prevState.stocks.map(stock => {
        if (stock.id === key) {
          stock.buyCount++;
        }
        return stock;
      });
      // New state console logged
      console.log(stocks);
      
      // ES6 it's the same as stocks: stocks
      return {
        stocks
      };
    }); 
  }

  render() {
    return (
      <div>
        <StockList 
          stocks={this.state.stocks}
          handleRowToggle={this.handleRowToggle.bind(this)}
          handleButtonBuy={this.handleButtonBuy.bind(this)}
          />
      </div>
    );
  }
}

class StockList extends React.Component {
  renderList() {
    return this.props.stocks.map((stock) => {
      return (
        <tr
          key={stock.id}
          >
          <td data-toggle={stock.id}>
            {stock.id}
          </td>
          <td data-toggle={stock.id}>
            {stock.title}
          </td>          
          <td data-toggle={stock.id}>
            {stock.value1}
          </td>
          <td data-toggle={stock.id}>
            {stock.value2}
          </td>             
           <td data-toggle={stock.id}>
            {stock.buyCount}
          </td> 
          <td data-toggle={stock.id}>
            <button onClick={ (event) => this.props.handleButtonBuy(stock.id) }>Buy Me</button>
          </td> 
          <td>
            <button onClick={ (event) => this.props.handleRowToggle(stock.id) }>Toggle Row</button>
          </td>              
        </tr>
      );
    });
  }

  render() {
    return (
      <table className="table">
        <tbody>
        {this.renderList()}
        </tbody>
      </table>
    )
  }
}






ReactDOM.render(
  <App />,
  document.getElementById('root')
);
tr td.hidden {
  display: none;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.4.2/react.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.4.2/react-dom.js"></script>

<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">

<!-- Optional theme -->
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap-theme.min.css" integrity="sha384-rHyoN1iRsVXV4nD0JutlnGaslCJuC7uwjduW9SVrLvRYooPp2bWYgmgJQIXwl/Sp" crossorigin="anonymous">


<div id="root"></div>

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

我可以在ReactJS中包含原始元素的子元素吗?

来自分类Dev

ReactJS删除通过count创建的子元素

来自分类Dev

如何选择一个Reactjs组件模板中使用的所有子组件(不是DOM元素)?

来自分类Dev

在ReactJS中嵌入子组件

来自分类Dev

ReactJS-具有结束标记和子元素的动态组件名称

来自分类Dev

将4个列表另存为1个列表中的子列表元素

来自分类Dev

在ReactJS组件中修改子级的属性

来自分类Dev

ReactJS中的子父组件通信

来自分类Dev

ReactJS 中的打开/关闭子组件

来自分类Dev

选择THIS元素的第1个2nd和3rd子元素

来自分类Dev

在元素中获取子元素?

来自分类Dev

如何在 ReactJS 组件对象数组中插入一个元素(在现有元素之间)

来自分类Dev

如何在ReactJs中将值从父元素传递到子元素?

来自分类Dev

像对象一样获取错误在ReactJs中作为React子元素无效

来自分类Dev

如何将额外的属性传递给 reactjs 中的子元素?

来自分类Dev

在ReactJs中渲染子组件时如何重载子数据

来自分类Dev

ReactJS:更改子组件的状态

来自分类Dev

Web组件-包装子元素

来自分类Dev

ReactJS:如何访问父组件中的所有子组件?

来自分类Dev

如何在 ReactJS 的父组件中获取子组件的 ref

来自分类Dev

模板匹配 XSLT1 根据日期跳过子元素

来自分类Dev

jQuery找到子元素的父元素,然后对初始父元素的另一个子元素执行操作

来自分类Dev

将 props 从父组件发送到子组件并在子组件中更新它们 (ReactJs)

来自分类Dev

单击子元素将为onclick事件reactjs提供未定义的

来自分类Dev

ReactJS:在父级中访问子级组件属性

来自分类Dev

如何从reactJS中的子组件更新父状态

来自分类Dev

无法将功能传递给ReactJS中的子组件

来自分类Dev

如何从Reactjs的子组件中获取多个值?

来自分类Dev

ReactJs - Redux 状态未在子组件的下拉列表中更新

Related 相关文章

  1. 1

    我可以在ReactJS中包含原始元素的子元素吗?

  2. 2

    ReactJS删除通过count创建的子元素

  3. 3

    如何选择一个Reactjs组件模板中使用的所有子组件(不是DOM元素)?

  4. 4

    在ReactJS中嵌入子组件

  5. 5

    ReactJS-具有结束标记和子元素的动态组件名称

  6. 6

    将4个列表另存为1个列表中的子列表元素

  7. 7

    在ReactJS组件中修改子级的属性

  8. 8

    ReactJS中的子父组件通信

  9. 9

    ReactJS 中的打开/关闭子组件

  10. 10

    选择THIS元素的第1个2nd和3rd子元素

  11. 11

    在元素中获取子元素?

  12. 12

    如何在 ReactJS 组件对象数组中插入一个元素(在现有元素之间)

  13. 13

    如何在ReactJs中将值从父元素传递到子元素?

  14. 14

    像对象一样获取错误在ReactJs中作为React子元素无效

  15. 15

    如何将额外的属性传递给 reactjs 中的子元素?

  16. 16

    在ReactJs中渲染子组件时如何重载子数据

  17. 17

    ReactJS:更改子组件的状态

  18. 18

    Web组件-包装子元素

  19. 19

    ReactJS:如何访问父组件中的所有子组件?

  20. 20

    如何在 ReactJS 的父组件中获取子组件的 ref

  21. 21

    模板匹配 XSLT1 根据日期跳过子元素

  22. 22

    jQuery找到子元素的父元素,然后对初始父元素的另一个子元素执行操作

  23. 23

    将 props 从父组件发送到子组件并在子组件中更新它们 (ReactJs)

  24. 24

    单击子元素将为onclick事件reactjs提供未定义的

  25. 25

    ReactJS:在父级中访问子级组件属性

  26. 26

    如何从reactJS中的子组件更新父状态

  27. 27

    无法将功能传递给ReactJS中的子组件

  28. 28

    如何从Reactjs的子组件中获取多个值?

  29. 29

    ReactJs - Redux 状态未在子组件的下拉列表中更新

热门标签

归档