反应:为什么变量“名称”不显示在渲染器中?

时间:2020-11-12 19:29:41

标签: reactjs

选中该复选框后,从业者的姓名将被推送到namesArray中。然后,我执行了namesArray.toString()并将其设置为变量“名称”。但是它不会渲染...我该如何解决?

let names = '';

    const selectPractitioners = () => {
        let namesArray = [];
        practitioners.forEach(pract => {
            if (pract.select) {
                namesArray.push(pract.displayName)
            }
        })
        names = namesArray.toString();
        console.log(names)
    };
 return (
        <div className="lists-container">

            <div className="practitioners-list">
                {practitioners.map(pract =>
                    <p key={pract.id} >
                        <input type="checkbox"
                            onChange={e => {
                                let value = e.target.checked;
                                setPractitioners(
                                    practitioners.map(pract => {
                                        pract.select = value;
                                        return pract;
                                    })
                                )
                            }}
                        />
                        {pract.displayName}
                    </p>)}
                <button onClick={() => { selectPractitioners() } } >Select Practitioners</button>
               
                        <p> These are the working practitioners: { names } </p>

            <div/>

1 个答案:

答案 0 :(得分:1)

您必须为此设置状态

尝试这样的事情:

import React, { useState} from 'react'


const Example = () => {
    const [names, setNames] = useState("");

    const selectPractitioners = () => {
        let namesArray = [];
        practitioners.forEach(pract => {
            if (pract.select) {
                namesArray.push(pract.displayName)
            }
        })
        setNames(namesArray.toString());
        console.log(names)
    };

...