我真的为看到的东西感到困惑-我有一个数据表,它以一个对象作为道具,还有一个用于过滤填充该表的数据的字符串道具:
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
也在更改。
道具对象不会触发预期效果是有原因的吗?
答案 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)