首页 > 社区问答列表 >在基于类的组件中更新React页面而不使用useState。

  在基于类的组件中更新React页面而不使用useState。

我正在使用React的基于类的组件来首先显示所有的令牌。然后,我想要同时显示两个带有spanid的文本,不考虑顺序,使用上一个和下一个按钮来重新渲染页面。重新渲染页面将有 n*(n-1) 种可能性。这是因为第一个带有spanid的文本将与第二个带有另一个spanid的文本配对,直到第n-1个带有spanid的令牌。对于带有spanid的n个文本,可以使用上一个/下一个按钮重新渲染页面n*(n-1)次。由于我正在使用React的基于类的组件编写代码,我不确定如何像在函数式设置中那样使用useState和props来处理这个问题。非常感谢任何关于此问题的帮助。

import React from 'react';
import './App.css';

const record = [
  { "tid": 1, "token_text": "Canis Familiaris", "spanid": 1, "label": "Name" },
  { "tid": 2, "token_text": "is" },
  { "tid": 3, "token_text": "the" },
  { "tid": 4, "token_text": "scientific name", "spanid": 2, "label": "name type"  },
  { "tid": 5, "token_text": "of" },
  { "tid": 6, "token_text": "dog", "spanid": 3, "label": "species" },
  { "tid": 7, "token_text": "." }
];

class Relation extends React.Component {
const input_tokens = record;
var cntr = 200;

   input_tokens.forEach(tk => {
       const span = tk['spanid'];
       if (!tk['spanid']) {
           tokens_to_render.push(
            
--
{tk['token_text']}
); } else { tokens_to_render.push(
{tk['label']}
{tk['token_text']}
); }; cntr = cntr + 1; }); return (
{tokens_to_render}
) } } export default Relation;


P粉739886290
P粉739886290

  • P粉413307845
  • P粉413307845   采纳为最佳   2023-08-04 14:14:29 1楼

    Translation: 像useState这样的Hooks只能在函数组件中使用。要在类组件中使用状态:

    • 从render()方法中返回要显示的JSX。
    • 将初始状态赋值给state属性。
    • 调用this.setState来更新状态。

    例如:


    class Example extends React.Component {
        state = {
            count: 0
        }
        
        render() {
            return 

    Clicked {this.state.count} times

    ; } }

    +0 添加回复