Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使用React筛选表?_Javascript_Reactjs - Fatal编程技术网

Javascript 如何使用React筛选表?

Javascript 如何使用React筛选表?,javascript,reactjs,Javascript,Reactjs,我试图通过数组进行过滤,以便在单击某个选项卡时,只显示这些结果。我已经设法分离出我想要保留的某些变量,但其他不符合标准的变量仍然保留。如何让filter方法在页面上实际呈现,以便显示结果。我已经搜索了好几个小时,试图找到tbody并进行排序,但我只是感到困惑,因为我对javascript和react基本上是新手。有人能给我指出正确的方向吗 Filter Method const tbody = document.getElementsByTagName('tbody') console

我试图通过数组进行过滤,以便在单击某个选项卡时,只显示这些结果。我已经设法分离出我想要保留的某些变量,但其他不符合标准的变量仍然保留。如何让filter方法在页面上实际呈现,以便显示结果。我已经搜索了好几个小时,试图找到tbody并进行排序,但我只是感到困惑,因为我对javascript和react基本上是新手。有人能给我指出正确的方向吗

Filter Method

const tbody = document.getElementsByTagName('tbody')
    console.log(tbody)
    //change active class
    function addTabBackground() {
        const tabs = document.querySelectorAll('[data-tab]')

        window.onload = function () {
            tabs.forEach(tab => {
                tab.addEventListener('click', () => {
                    if (tab.getAttribute('data-tab') === 'gains') {
                        listOfOptions.map(option => {
                            console.log(option.totalProfit)
                        })
                    }
                    tabs.forEach(tab => {
                        tab.classList.remove('active')
                    })
                    tab.classList.add('active')
                })
            })
        }

    }

<div className="outputs" >
                <table>
                    <thead>
                        <tr>
                            <th>Date</th>
                            <th>Stock Name</th>
                            <th>Price Of Option</th>
                            <th>Number Of Options</th>
                            <th>Total Amount Spent</th>
                            <th>Option Sold At</th>
                            <th>Amount Of Options Sold</th>
                            <th>Proft</th>
                        </tr>
                    </thead>
                    {listOfOptions.map(option => {
                        return (
                            <tbody>
                                <tr>
                                    <td>{option.clock}</td>
                                    <td>{option.name.toUpperCase()}</td>
                                    <td>${option.price}</td>
                                    <td>{option.amountOfOptions}</td>
                                    <td>${option.totalAmountSpent.toFixed(2)}</td>
                                    <td>${option.optionPriceSoldAt}</td>
                                    <td>{option.amountOfOptionsSold}</td>
                                    <td style={{ color: option.totalProfit >= 0 ? 'green' : 'red' }}>${option.totalProfit.toFixed(2)}</td>
                                </tr>
                            </tbody>
                        )
                    })}
                </table>
            </div>
过滤方法
const tbody=document.getElementsByTagName('tbody')
控制台日志(tbody)
//更改活动类
函数addTabBackground(){
const tabs=document.querySelectorAll(“[data tab]”)
window.onload=函数(){
tabs.forEach(tab=>{
tab.addEventListener('单击',()=>{
如果(tab.getAttribute('data-tab')=='gains'){
list of options.map(选项=>{
console.log(option.totalProfit)
})
}
tabs.forEach(tab=>{
tab.classList.remove('active')
})
tab.classList.add('active')
})
})
}
}
日期
股票名称
期权价格
选择的数量
支出总额
期权出售价格
出售期权的金额
Proft
{listOfOptions.map(选项=>{
返回(
{option.clock}
{option.name.toUpperCase()}
${option.price}
{option.amountOfOptions}
${option.TotalAmountSpeed.toFixed(2)}
${option.optionPriceSoldAt}
{option.amountofoptionssell}
=0?'green':'red'}>${option.totalProfit.toFixed(2)}
)
})}

从评论中假设您有一些模糊的东西:

function Page() {
  return (
    <>
      <Navbar />
      <Table />
    </>
  )
}
您的Navbar组件应该有一个onClick处理程序,当活动选项卡更改时,它在该处理程序中调用setActiveTab函数

然后在表组件中,您应该有如下内容:

function Table({ activeTab }) {
  return (
   <table>
    ...
   {listOfOptions
     .filter(option => /* something depending on the activeTab */)
     .map(option => <... />)
   }
  </table>
}
函数表({activeTab}){
返回(
...
{选项列表
.filter(选项=>/*取决于activeTab*/)
.map(选项=>)
}
}

您正在与React抗争。与其捣乱DOM,不如使用
onClick
道具,在JSX中动态计算道具,并根据状态有条件地渲染整行。您好@coreyward,谢谢您的回答,但您能否更深入地解释一下。我将如何进行此操作?您能否澄清选项卡被呈现?它们也是react组件吗?或者这是一个带有一些原始html元素与react组件混合的遗留应用程序?@AnthonyGarcia Labiad Hi,它们是一个react组件。它们存储在一个名为navbar的组件中。因此,在这个函数中,您将使用filter,然后通过filter的答案进行映射。然后,这将呈现到页面.
function Table({ activeTab }) {
  return (
   <table>
    ...
   {listOfOptions
     .filter(option => /* something depending on the activeTab */)
     .map(option => <... />)
   }
  </table>
}