道具不更新子组件

时间:2020-09-25 18:43:47

标签: javascript reactjs use-effect

我真的为看到的东西感到困惑-我有一个数据表,它以一个对象作为道具,还有一个用于过滤填充该表的数据的字符串道具:

const AudienceMembers = ({audience, search, onChangeHandler}) => {    
    useEffect(() => {
        fetchData();
        console.log("change to search or audience")
    }, [search, audience])

audience对象具有一个criteria属性,该属性用于生成fetchData中使用的API调用,并且fetchData函数应在{{1} }或search道具更改。父组件这样调用audience

AudienceMembers

<AudienceMembers audience={item} search={searchString} onChangeHandler={setTotalCount} /> searchString都是父组件中的状态对象,当我提供搜索字符串时,子组件将按预期方式更新(带有item日志消息)。但是,对change to search or audience的更改不会触发子项的任何更改,即使我可以使用react debug工具栏看到父组件中的audience也在更改。

道具对象不会触发预期效果是有原因的吗?

1 个答案:

答案 0 :(得分:0)

请在父组件中显示您更改受众群体属性的位置。

例如以下代码对我来说效果很好,并且受众群体的变化将消息带入控制台。

name = input("Enter file:")
if len(name) < 1 : name = "mbox-short.txt"
handle = open(name)
email_dict = dict()
email_list = list()
for lines in handle:
    lines = lines.strip()
    if not lines.startswith('From '): continue
    from_lines = lines.split()
    from_lines = from_lines[1]
    email_dict[from_lines] = email_dict.get(from_lines,0) + 1

prolific_committer = None
bigcount = None

for email, count in email_dict.items():
    if prolific_committer is None or count > bigcount:
        prolific_committer = email
        bigcount = count
print(prolific_committer,bigcount)